2012-12-06 157 views
14

我有一個任務將我的應用移至Google Maps Android API V2。現在,我需要獲取緯度/經度跨度。我在以前的版本API中使用了MapView.getLatitudeSpan()MapView.getLongitudeSpan()。現在我在V2中找不到像這樣的東西。如何獲取Google Map V2中的緯度/經度跨度Android

有沒有人有同樣的問題?

回答

24

您可以使用下面的代碼來獲取緯度/經度跨度:

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; 

我希望這有助於。

+0

我們可以得到的地圖可見部分的中心lat lng – Prasad

+0

太棒了!謝謝。 – Deciantis

6

首先使用GoogleMap.getProjection()獲取投影。然後您可以撥打Projection.getVisibleRegion()以獲得具有LatLngBounds的VisibleRegion。

緯度跨度和經度跨度不再有意義的原因是因爲地圖現在可以旋轉和傾斜,因此視口不再是地圖上的緯度/經度對齊的矩形。

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"); 
} 

添加標記,只有當它落在可見區域

3

這樣的工作對我來說:

​​


糟糕,我誤解了這個問題,我的意思是我沒有看到「span」這個詞。 根據API正確的是:

首先得到界限:

LatLngBounds bounds = gMap.getProjection().getVisibleRegion().latLngBounds; 

然後問,如果任何點在範圍:

LatLng point = new LatLng (latitude, longitude); 
if(bounds.contains(point)){ 
    //do something 
} 
相關問題