私のアプリケーションでは、MapViewがあります。
ユーザーが設定した半径に応じて地図のズームを変更したい。このリンクで答えを見つけましたが、問題は、関数が画面の幅のみを考慮していることです。高さも考慮したいと思います。
たとえば、半径1 kmを表示したい場合、リンクの関数は幅1 kmを表示しますが、高さ1kmは表示しません。幅と高さの両方で表示されることが非常に重要です。高さが1kmの場合、幅は1.5kmです。
どうすればいいですか?
私のアプリケーションでは、MapViewがあります。
ユーザーが設定した半径に応じて地図のズームを変更したい。このリンクで答えを見つけましたが、問題は、関数が画面の幅のみを考慮していることです。高さも考慮したいと思います。
たとえば、半径1 kmを表示したい場合、リンクの関数は幅1 kmを表示しますが、高さ1kmは表示しません。幅と高さの両方で表示されることが非常に重要です。高さが1kmの場合、幅は1.5kmです。
どうすればいいですか?
ここに作業コードと正確な結果があります。
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;
}