2013-07-12 25 views
7

C'è un modo per ingrandire una mappa il più possibile ma mantenendo tutti i marker sullo schermo contemporaneamente. Ho sei marcatori in una forma non uniforme. Stavo pensando di prendere il loro centro e localizzare la mappa, ma non so ancora fino a che punto è possibile ingrandire la mappa a livello programmatico.Indicatori di centro API V2 per Android Google maps

Questi indicatori cambiano posizione ogni volta che viene creata la mappa. Idealmente avrei uno script che ingrandisce la mappa in modo che tutti siano inclusi nella vista.

Quindi capisci. Sto creando i marcatori uno alla volta da Json con la seguente riga in un ciclo.

mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title(c.getString("title"))); 

risposta

23

si dovrebbe utilizzare la classe CameraUpdate fare (probabilmente) tutti i movimenti della mappa programmatiche.

Per fare questo, prima di calcolare i limiti di tutti i marcatori in questo modo:

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
for each (Marker m : markers) { 
    builder.include(m.getPosition()); 
} 

LatLngBounds bounds = builder.build(); 

quindi ottenere un oggetto Descrizione del movimento utilizzando la fabbrica: CameraUpdateFactory:

int padding = 0; // offset from edges of the map in pixels 
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); 

spostare Infine la mappa :

googleMap.moveCamera(cu); 

Oppure, se volete un'animazione:

googleMap.animateCamera(cu); 

* ricevuti dal un altro post: Android map v2 zoom to show all the markers

+1

la prego di link al post originale si è ottenuto questo da un po 'di più contesto . – Somk

+0

Ecco l'intera cosa. qualsiasi modo, eccolo qui http://stackoverflow.com/a/14828739/1837759 –

+0

Grazie. Questa linea mi sta causando confusione anche se foreach (Marker m: markers) { Come ottengo i marker? – Somk

Problemi correlati