我的任务是将我的应用移动到Google Maps Android API V2。现在,我需要获得纬度/经度范围。我在以前的版本API中使用了MapView.getLatitudeSpan()
和MapView.getLongitudeSpan()
。现在我在V2中找不到这样的东西。
有人有同样的问题吗?
答案 0 :(得分: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;
我希望这会有所帮助。
答案 1 :(得分:6)
首先使用GoogleMap.getProjection()
获取投影。然后你可以调用Projection.getVisibleRegion()
来获得一个具有LatLngBounds的VisibleRegion。
LatitudeSpan和Longitude跨度不再有意义的原因是因为地图现在可以旋转和倾斜,因此视口不再是地图上的纬度/经度对齐矩形。
答案 2 :(得分:3)
这种方式对我有用:
CameraPosition camPos2 = mapa.getCameraPosition();
LatLng pos = camPos2.target;
Toast.makeText(MainActivity.this,"Lat: " + pos.latitude + " - Lng: " +pos.longitude, Toast.LENGTH_LONG).show();
击> <击> 撞击>
首先得到界限:
LatLngBounds bounds = gMap.getProjection().getVisibleRegion().latLngBounds;
然后询问是否有任何一点是在界限内:
LatLng point = new LatLng (latitude, longitude);
if(bounds.contains(point)){
//do something
}
答案 3 :(得分: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");
}
仅在标记位于可见区域时添加标记