1

我在我的Android應用程序中有一個MapFragment,現在我想知道在地圖上實際顯示的最小和最大經緯度。函數getMapCenter在MapFragment /從MapFragment獲取MapView

我發現這個解決方案:

如果你想找出的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)。

我需要最小/最大座標來做一個DB查詢來選擇POI-DB-Entrys。

回答

2

您可以從GoogleMap使用getVisibleRegionProjection得到它。

假設你命名你的GoogleMapmap,你做

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

VisibleRegion不一定是矩形,但給你的界限,看到docs更多信息。

+0

謝謝,我會在嘗試此晚上。看起來這是我搜索的內容。 – padalton

+0

是的,它的工作..非常感謝! – padalton

0

要添加到iagreen的答案,您可能對可見區域調用LatLngBounds感興趣。

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

從那裏,你可以得到最小/最大的緯度/經度(東北/西南角)。

不知道你想什麼這個做的,但如果你正在尋找檢查一個標記爲「屏幕上」,那麼你可能會感興趣的this answer

+0

我已經實施了一個解決方案。 – padalton