Google Maps
を使用して地図上に静的な円を描きたい。ユーザーがつまむと、地図がズームイン/ズームアウトします。
マップの半径(円に含まれる領域に関連する)を知り、それに応じて下部のシークバーを変更する必要があります。
画面の左端から右端までの距離を取得する方法を知っている人はいますか? Google Maps API doc で何も見つかりませんでした。
このようなもの:
visibleRegionを使用すると、すべての角の座標と中心を取得できます。
VisibleRegion vr = mMap.getProjection().getVisibleRegion();
double left = vr.latLngBounds.southwest.longitude;
double top = vr.latLngBounds.northeast.latitude;
double right = vr.latLngBounds.northeast.longitude;
double bottom = vr.latLngBounds.southwest.latitude;
これで2つの地域からの距離を計算できます
Location MiddleLeftCornerLocation;//(center's latitude,vr.latLngBounds.southwest.longitude)
Location center=new Location("center");
center.setLatitude( vr.latLngBounds.getCenter().latitude);
center.setLongitude( vr.latLngBounds.getCenter().longitude);
float dis = center.distanceTo(MiddleLeftCornerLocation);//calculate distane between middleLeftcorner and center
@Mdからのすばらしい回答で、「MiddleLeftCornerLocation」変数のコードを書くのに少し時間がかかりました。 Monsur Hossain Tonmoy、それでそれを完了するだけです(私はあなたの答えをコメントするのに十分な評判ポイントを持っていません、ごめんなさい):
VisibleRegion vr = map.getProjection().getVisibleRegion();
double bottom = vr.latLngBounds.southwest.latitude;
Location center = new Location("center");
center.setLatitude(vr.latLngBounds.getCenter().latitude);
center.setLongitude(vr.latLngBounds.getCenter().longitude);
Location middleLeftCornerLocation = new Location("center");
middleLeftCornerLocation.setLatitude(center.getLatitude());
middleLeftCornerLocation.setLongitude(left);
float dis = center.distanceTo(middleLeftCornerLocation);
まず、マップの中心点を次のように取得します
googleMap.getCameraPosition().target;
次に、マップの幅を計算し、height/2を取得し、取得したPoint
x
値を使用してそれらをy
に変換します。
次に、そのポイントをマップに関連付けます
LatLng widthPoint = map.getProjection().fromScreenLocation(point);
タグレットポイントと幅ポイントができたので、2つのポイント間の距離を計算して半径を計算できます。
注
これは常に縦向きモードであると想定しています。横向きモードの場合、円は表示領域よりも大きくなるため、この場合は高さからの距離を取得する必要があります