2012-12-16 11 views

Odpowiedz

149

miałem ten sam problem. Wygląda na to, że możesz uzyskać centrum w ten sposób:

mMap.getCameraPosition().target 

gdzie mMap jest instancją GoogleMap ze swojej działalności. Spowoduje to zwrócenie obiektu LatLng, który w zasadzie reprezentuje środek mapy.

Uwaga: klasa GeoPoint nie jest już dostępna.

Według http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html

cel jest „Lokalizacja, że ​​aparat jest skierowany w.” (Testowałem go z przykładowego kodu i to działało w porządku dla mnie)

+1

Dzięki, nie zdawałem sobie sprawy, że GeoPoint był niedostępny w wersji 2. Miałem zamiar użyć obiektu VisibleRegion do obliczenia środkowego punktu między czterema rogami ekranu mapy. –

+0

Udało się. Dzięki –

+0

@Radu Comaneci Jak zrobić to samo z html javascript? Każdy pomysł –

29

Znalazłem dwa sposoby to zrobić:

1) najprostszy, pierwszy jest za pomocą właściwości docelowego na mapie za CameraPosition Object

LatLng center = mMap.getCameraPosition().target; 

2) drugi pomocą obiektu VisibleRegion:

VisibleRegion visibleRegion = mMap.getProjection() 
        .getVisibleRegion(); 

Point x = mMap.getProjection().toScreenLocation(
        visibleRegion.farRight); 

Point y = mMap.getProjection().toScreenLocation(
        visibleRegion.nearLeft); 

Point centerPoint = new Point(x.x/2, y.y/2); 

LatLng centerFromPoint = mMap.getProjection().fromScreenLocation(
        centerPoint); 

I w porównaniu zarówno odpowiedzi:

Log.d("MapFragment: ", "Center From camera: Long: " + center.longitude 
         + " Lat" + center.latitude); 

Log.d("Punto x", "x:" + x.x + "y:" + x.y); 
Log.d("Punto y", "y:" + y.x + "y:" + y.y); 

Log.d("MapFragment: ", "Center From Point: Long: " 
        + centerFromPoint.longitude + " Lat" 
        + centerFromPoint.latitude); 
+1

Opcja 2 daje zupełnie inną odpowiedź niż opcja 1. Może dlatego, że mam przezroczysty pasek narzędzi? Dzięki za wskazówkę! – Flyingkiwi

+3

, więc która metoda jest dokładna? –

+0

@shontauro Jak zrobić to samo z html javascript? Każdy pomysł –

5

dostać środek mapie użyłem onMapReady() metoda aktywności, a następnie wykorzystywane googleMap.setOnCameraChangeListener() method to get position of Came:

@Override 
public void onMapReady(GoogleMap googMap) { 
    googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { 
     @Override 
     public void onCameraChange(CameraPosition cameraPosition) { 

     Log.i("centerLat",cameraPosition.target.latitude); 

     Log.i("centerLong",cameraPosition.target.longitude); 

     } 
    }); 
} 
4

można użyć:. poĹ,oĹĽenia geograficznego = map.getProjection()() latLngBounds.getCenter getVisibleRegion.();

+0

To jest idealna odpowiedź. Dzięki :) –

Powiązane problemy