0

画面中央の円の中心と半径を計算したいのですが、半径は可視領域の幅の半分です。

visibleRegion.latLngBounds.getCenter()

また

cameraPosition.target

大きくズームアウトすると、中心の値が物理的な中心からオフセットされます。

次の図では、黒い影付きの円を次のように計算しました。

   VisibleRegion visibleRegion = mMap.getProjection().getVisibleRegion();
   LatLng nearLeft = visibleRegion.nearLeft;
   LatLng nearRight = visibleRegion.nearRight;
   mCircle.setCenter(visibleRegion.latLngBounds.getCenter());
   mCircle.setRadius(distanceFrom(nearLeft.latitude, nearLeft.longitude, nearRight.latitude, nearRight.longitude) / 4);




 public double distanceFrom(double lat1, double lng1, double lat2, double lng2)
    {
        // Return distance between 2 points, stored as 2 pair location;
        double dLat = Math.toRadians(lat2 - lat1);
        double dLng = Math.toRadians(lng2 - lng1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng / 2) * Math.sin(dLng / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        double dist = EARTH_RADIOUS * c;
        return new Double(dist * METER_CONVERSION).floatValue();
    }

緑の円の半径と中心を探しています。ここに画像の説明を入力

4

1 に答える 1

1

興味のある方のために、私はこの方法で解決しました: GoolgeMap.getProjection() を使用して、開始時に中心のピクセル位置と円上の点のピクセル位置を計算します。カメラが変わると、Point() を LatLang に変換し、半径が円の中心点と円上の点の間の距離 (メートル単位) に等しくなることで、そのピクセル位置を中心とする円を描画します。

于 2015-08-25T17:52:14.283 に答える