1

我的 Android 应用程序中有一个 MapFragment,现在我想知道实际地图上显示的最小和最大纬度/经度。

我找到了这个解决方案:

如果您想找出 MapView 角落的经度纬度,您可以使用:

Point mapCenter = mapView.getMapCenter();
int latitudeSpan = mapView.getLatitudeSpan() / 2;
int longitudeSpan = mapView.getLongitudeSpan() / 2;
int topLeftLat = mapCenter.getLatitudeE6() + (latitudeSpan);
int topLeftLon = mapCenter.getLongitudeE6() - (longitudeSpan);
int bottomLeftLat = mapCenter.getLatitudeE6() - (latitudeSpan);
int bottomLeftLon = mapCenter.getLongitudeE6() + (longitudeSpan);

我现在的问题是我没有 MapView,我只有一个 GoogleMap (com.google.android.gms.maps.GoogleMap) 和一个 MapFragment (com.google.android.gms.maps.MapFragment) 。

我需要最小/最大坐标来执行数据库查询以选择 POI-DB-Entrys。

4

2 回答 2

2

您可以从GoogleMap使用getVisibleRegionfrom中获取它Projection

假设你命名你的GoogleMapas map,你做

VisibleRegion bounds = map.getProjection().getVisibleRegion();

VisibleRegion不一定是矩形,但可以为您提供界限,请参阅文档以获取更多信息。

于 2013-01-31T21:26:58.157 回答
0

要添加到 iagreen 的答案,您可能对可见区域调用中的 LatLngBounds 感兴趣。

LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds;

由此,您可以获得最小/最大纬度/经度(东北/西南角)。

不确定您要对此做什么,但是如果您要检查标记是否“在屏幕上”,那么您可能对此答案感兴趣

于 2013-02-01T17:55:37.160 回答