Android MapView масштабирует до радиуса

в моем приложении у меня есть MapView.

я хочу изменить масштаб карты в соответствии с радиусом, установленным пользователем. я нашел ответ в этой ссылке, но проблема в том, что функция учитывает только ширину экрана.. я хочу к высоте, котор нужно рассматривать слишком.

например: если я хочу увидеть радиус 1 км - функция в ссылке покажет мне ширину 1 км, но не высоту 1 км.. для меня действительно важно, чтобы она отображала его как по ширине, так и по высоте, даже если при высоте 1км ширина 1,5км

как мне это сделать ?


person Asaf Nevo    schedule 19.09.2012    source источник
comment
Не могли бы вы найти способ сделать это?   -  person Zeba    schedule 26.07.2013
comment
не совсем ... ссылка в вопросе - лучший ответ, который я нашел до сих пор ..   -  person Asaf Nevo    schedule 26.07.2013


Ответы (1)


Вот рабочий код и с точным результатом.

1) Сделайте круг на объекте с желаемым радиусом

Circle circle = mGoogleMap.addCircle(new CircleOptions().center(new LatLng(latitude, longitude)).radius(getRadiusInMeters()).strokeColor(Color.RED));           
        circle.setVisible(true);
        getZoomLevel(circle);

2) Передайте этот объект этой функции и установите уровень масштабирования. Здесь ссылка

public int getZoomLevel(Circle circle) {
if (circle != null){
    double radius = circle.getRadius();
    double scale = radius / 500;
    zoomLevel =(int) (16 - Math.log(scale) / Math.log(2));
}
return zoomLevel;
}
person Syed Raza Mehdi    schedule 14.04.2014
comment
что такое 500 в данном случае? что такое 16 в данном случае? - person j2emanue; 30.08.2019