14

アプリを Google Maps Android API V2 に移行するタスクがあります。ここで、緯度/経度のスパンを取得する必要があります。以前のバージョンの API ではMapView.getLatitudeSpan()とを使用していました。MapView.getLongitudeSpan()今、V2でこのようなものを見つけることができません。

誰も同じ問題を抱えていますか?

4

4 に答える 4

25

次のコードを使用して、lat/lng スパンを取得できます。

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;

これが役立つことを願っています。

于 2012-12-09T14:25:21.197 に答える
6

最初に を使用して射影を取得しGoogleMap.getProjection()ます。次に、呼び出しProjection.getVisibleRegion()て、LatLngBounds を持つ VisibleRegion を取得できます。

LatitudeSpan と Longitude スパンが意味をなさなくなった理由は、マップを回転および傾斜できるようになったため、ビューポートがマップ上の緯度/経度に位置合わせされた長方形ではなくなったためです。

于 2012-12-06T09:08:14.357 に答える
4

この方法は私にとってはうまくいきます:

CameraPosition camPos2 = mapa.getCameraPosition();
LatLng pos = camPos2.target;
Toast.makeText(MainActivity.this,"Lat: " + pos.latitude + " - Lng: " +pos.longitude,  Toast.LENGTH_LONG).show();


おっと、私は質問を誤解しました。つまり、「スパン」という単語を見ませんでした。APIによると、正しいのは次のとおりです。

最初に境界を取得します。

LatLngBounds bounds = gMap.getProjection().getVisibleRegion().latLngBounds;

そして、いずれかの点が範囲内にあるかどうかを尋ねます。

LatLng point = new LatLng (latitude, longitude);
if(bounds.contains(point)){
    //do something
}
于 2013-05-13T14:32:35.930 に答える
1

これが答えです

LatLngBounds bounds = googleMap.getProjection().getVisibleRegion().latLngBounds;
if (bounds.contains(ROMA)) {
   marker = googleMap.addMarker(
     new MarkerOptions()
      .position(ROMA)
      .title("Hello")
      .snippet("Nice Place")
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
     );     
   System.out.println("Marker added");
}

可視領域にある場合にのみマーカーを追加します

于 2013-03-25T10:01:22.777 に答える