2012-12-16 13 views

risposta

149

ho avuto lo stesso problema. Sembra che tu possa ottenere il centro in questo modo:

mMap.getCameraPosition().target 

dove mMap è l'istanza di GoogleMap dalla tua attività. Ciò restituirà un oggetto LatLng che rappresenta in sostanza il centro della mappa.

Si noti che la classe GeoPoint non è più disponibile.

Secondo http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html

obiettivo è "La posizione che la fotocamera sta indicando." (Ho provato con il codice di esempio e ha funzionato bene per me)

+1

Grazie, non mi ero reso conto che GeoPoint non era disponibile nella v2. Stavo per usare l'oggetto VisibleRegion per calcolare il punto intermedio tra i quattro angoli della visualizzazione della mappa. –

+0

Ha funzionato. Grazie –

+0

@Radu Comaneci Come fare lo stesso con html javascript? Qualsiasi idea –

29

Ho trovato due modi per farlo:

1) Il modo più semplice, il primo è utilizzando la proprietà di destinazione nel Map CameraPosition oggetto

LatLng center = mMap.getCameraPosition().target; 

2) Il secondo utilizza un oggetto 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); 

ho confrontato entrambe le risposte:

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

L'opzione 2 offre una risposta completamente diversa rispetto all'opzione 1. Forse perché ho una barra degli strumenti trasparente? Grazie per il consiglio! – Flyingkiwi

+3

quindi quale metodo è accurato? –

+0

@shontauro Come fare lo stesso con html javascript? Qualsiasi idea –

5

per ottenere centro della mappa ho usato onMapReady() il metodo in attività, quindi utilizzato 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

si può usare:. LatLng = map.getProjection() getVisibleRegion() latLngBounds.getCenter.();

+0

Questa è la risposta perfetta. Grazie :) –

Problemi correlati