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