web-dev-qa-db-ja.com

Googleマップの表示部分から距離を取得する

Google Mapsを使用して地図上に静的な円を描きたい。ユーザーがつまむと、地図がズームイン/ズームアウトします。

マップの半径(円に含まれる領域に関連する)を知り、それに応じて下部のシークバーを変更する必要があります。

画面の左端から右端までの距離を取得する方法を知っている人はいますか? Google Maps API doc で何も見つかりませんでした。

このようなもの:

enter image description here

22
Ale

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 

enter image description here

@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);
13
Fer

まず、マップの中心点を次のように取得します

googleMap.getCameraPosition().target;

次に、マップの幅を計算し、height/2を取得し、取得したPointx値を使用してそれらをyに変換します。

次に、そのポイントをマップに関連付けます

LatLng widthPoint = map.getProjection().fromScreenLocation(point);

タグレットポイントと幅ポイントができたので、2つのポイント間の距離を計算して半径を計算できます。

これは常に縦向きモードであると想定しています。横向きモードの場合、円は表示領域よりも大きくなるため、この場合は高さからの距離を取得する必要があります

2
tyczj