14

我的任务是将我的应用程序移至 Google Maps Android APIs 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 回答