我有一个任务将我的应用移至Google Maps Android API V2。现在,我需要获取纬度/经度跨度。我在以前的版本API中使用了MapView.getLatitudeSpan()
和MapView.getLongitudeSpan()
。现在我在V2中找不到像这样的东西。如何获取Google Map V2中的纬度/经度跨度Android
有没有人有同样的问题?
我有一个任务将我的应用移至Google Maps Android API V2。现在,我需要获取纬度/经度跨度。我在以前的版本API中使用了MapView.getLatitudeSpan()
和MapView.getLongitudeSpan()
。现在我在V2中找不到像这样的东西。如何获取Google Map V2中的纬度/经度跨度Android
有没有人有同样的问题?
您可以使用下面的代码来获取纬度/经度跨度:
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。
纬度跨度和经度跨度不再有意义的原因是因为地图现在可以旋转和倾斜,因此视口不再是地图上的纬度/经度对齐的矩形。
下面是答案
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");
}
添加标记,只有当它落在可见区域
这样的工作对我来说:
糟糕,我误解了这个问题,我的意思是我没有看到“span”这个词。 根据API正确的是:
首先得到界限:
LatLngBounds bounds = gMap.getProjection().getVisibleRegion().latLngBounds;
然后问,如果任何点在范围:
LatLng point = new LatLng (latitude, longitude);
if(bounds.contains(point)){
//do something
}
我们可以得到的地图可见部分的中心lat lng – Prasad
太棒了!谢谢。 – Deciantis