アプリを Google Maps Android API V2 に移行するタスクがあります。ここで、緯度/経度のスパンを取得する必要があります。以前のバージョンの API ではMapView.getLatitudeSpan()
とを使用していました。MapView.getLongitudeSpan()
今、V2でこのようなものを見つけることができません。
誰も同じ問題を抱えていますか?
アプリを Google Maps Android API V2 に移行するタスクがあります。ここで、緯度/経度のスパンを取得する必要があります。以前のバージョンの API ではMapView.getLatitudeSpan()
とを使用していました。MapView.getLongitudeSpan()
今、V2でこのようなものを見つけることができません。
誰も同じ問題を抱えていますか?
次のコードを使用して、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;
これが役立つことを願っています。
最初に を使用して射影を取得しGoogleMap.getProjection()
ます。次に、呼び出しProjection.getVisibleRegion()
て、LatLngBounds を持つ VisibleRegion を取得できます。
LatitudeSpan と Longitude スパンが意味をなさなくなった理由は、マップを回転および傾斜できるようになったため、ビューポートがマップ上の緯度/経度に位置合わせされた長方形ではなくなったためです。
この方法は私にとってはうまくいきます:
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
}
これが答えです
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");
}
可視領域にある場合にのみマーカーを追加します