4

私のアプリケーションでは、MapViewがあります。

ユーザーが設定した半径に応じて地図のズームを変更したい。このリンクで答えを見つけましたが、問題は、関数が画面の幅のみを考慮していることです。高さも考慮したいと思います。

たとえば、半径1 kmを表示したい場合、リンクの関数は幅1 kmを表示しますが、高さ1kmは表示しません。幅と高さの両方で表示されることが非常に重要です。高さが1kmの場合、幅は1.5kmです。

どうすればいいですか?

4

1 に答える 1

4

ここに作業コードと正確な結果があります。

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;
}
于 2014-04-14T04:50:14.220 に答える