2016-04-25 17 views
0

Also habe ich diesen Code versuchen Markierungen in einer Datenbank gespeichert hinzuzufügen:Drucken mehrerer Markierungen auf Android Google Maps

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    control.conectar(); 
    ArrayList<Sucursal> sucursales = control.getSucursales(); 
    control.cerrar(); 
    LatLng loc; 
    for(int x=0;x<sucursales.size();x++){ 
     loc = new LatLng(sucursales.get(x).getX(), sucursales.get(x).getY()); 
     mMap.addMarker(new MarkerOptions().position(loc).title(sucursales.get(x).getNombre())); 
    } 
    mMap.moveCamera(CameraUpdateFactory.zoomTo(12)); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(20.67711737527203, -103.36349487304688))); 
} 

Alle DB Reihen korrekt und die cicle arbeitet, erhalten werden immer jedoch nur die erste Zeile scheint zu "arbeiten", weil es auch nicht an der richtigen Stelle ist.

Ich habe diesen genauen Code ein anderes Mal versucht, aber ich denke, ich vermisse jetzt etwas.

+1

Sie fügen mehrere Marker hinzu und verschieben dann die Kamera an einen anderen Ort. Wenn du einen Fehler bekommst, poste deinen Logcat hier –

+0

@AnujSharma Ich bekomme keine Fehler, und ich bewege die Kamera nur an einen "durchschnittlichen" Ort, damit ich jeden anderen sehen kann. –

+0

Was ist Ihre Anforderung und was erhalten Sie in Ihren Ergebnissen? –

Antwort

1

Das erste, was Sie beachten sollten, ist, dass Sie alle Daten haben, die in Ihrer Variable benötigt werden. Dadurch können Sie sicher sein, dass Sie alle Markierungen auf der Karte platzieren.

Hier gehen wir davon aus, dass sich alle Marker im Viewport befinden, was in jedem Fall nicht wahr sein kann, also sollten Sie hier Grenzen setzen.

Dadurch werden Sie sicher sein, dass Sie alle Markierungen im Ansichtsfenster behalten.

LatLngBounds bounds = new LatLngBounds.Builder().include(source).include(destination).build(); 
googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100)); 

In Ihrem Fall, definieren Sie dies vor für Schleife und aktualisieren Sie in jeder der Iteration.

@Override 
public void onMapReady(GoogleMap googleMap) { 
mMap = googleMap; 

// Add a marker in Sydney and move the camera 
control.conectar(); 
ArrayList<Sucursal> sucursales = control.getSucursales(); 
control.cerrar(); 
LatLng loc; 
LatLngBounds bounds=new LatLngBounds.Builder().build(); 
for(int x=0;x<sucursales.size();x++){ 
    bounds.including(new LatLng(sucursales.get(x).getX(), sucursales.get(x).getY())); 
} 
for(int x=0;x<sucursales.size();x++){ 
    loc = new LatLng(sucursales.get(x).getX(), sucursales.get(x).getY()); 
    mMap.addMarker(new MarkerOptions().position(loc).title(sucursales.get(x).getNombre())); 
} 
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100)); 
} 

Dies bringt alle Ihre Markierungen in das Ansichtsfenster.

Sagen Sie, ob es für Sie funktioniert hat und akzeptieren Sie dies, wenn dies das ist, was Sie wollten.

+0

hat es für Sie funktioniert? –

Verwandte Themen