2017-01-15 4 views
1

Ich arbeite an einer Android-App und ich habe zwei Marker, die ich auf einer Google-Karte platzieren möchte. Die Idee ist, dass der Benutzer die zwei Standorte auf einen Blick sehen kann, ohne mit der Karte interagieren zu müssen.passen Weltkarte auf Android-Bildschirm

LatLngBounds.Builder b = new LatLngBounds.Builder(); 
b.include(userPos); 
b.include(cardPos); 
LatLngBounds bounds = b.build(); 
int width = (int) (0.7 * infoView.getWidth()); 
int height = (int) (0.7 * mapView.getHeight()); 
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, 5); 
googleMap.animateCamera(cu); 

Der Code funktioniert gut, wenn die beiden Stellen nicht sehr weit voneinander entfernt sind. Wenn die Standorte beispielsweise Singapur und USA sind, können die beiden Marker nicht zusammen gesehen werden. Ich habe versucht, die Zoomstufe mit dem gleichen Ergebnis manuell auf 0 zu setzen. Gibt es eine Möglichkeit, dass ich die gesamte Weltkarte auf dem Android-Gerät auf einmal zeigen kann (d. H. Ohne Scrollen auf dem Teil des Benutzers)?

Update: Ich habe versucht, die Karte auf Zoomstufe 0 explizit einzustellen. Die Karte passt nicht in die Ansicht, die ich erstellt habe. Ist es nicht möglich, die gesamte Weltansicht der Karte auf dem Bildschirm zu sehen?

+0

, check it out http://stackoverflow.com/questions/9893680/google-maps-api-v3-show-the-whole-world. Hoffe, das hilft –

+0

Ist es nicht die gleiche Sache, die ich versucht habe? Die Lösung gibt zwei LatLng-Positionen an und legt die Grenze entsprechend fest. In der Tat sind meine zwei Positionen weniger extrem – Hassan

Antwort

1

Sie sollten die CameraUpdate-Klasse verwenden, um (wahrscheinlich) alle programmatischen Kartenbewegungen auszuführen.

Um dies zu tun, berechnen zuerst die Grenzen aller Marker wie so:

LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
for (Marker marker : markers) { 
    builder.include(marker.getPosition()); 
} 
LatLngBounds bounds = builder.build(); 

Dann mithilfe der Fabrik eine Bewegung Beschreibung Objekt erhalten: CameraUpdateFactory:

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

Schließlich verschieben Sie die Karte :

googleMap.moveCamera(cu); 

Oder wenn Sie eine Animation wollen:

googleMap.animateCamera(cu); 

Das ist alles :)

+0

Das ist das gleiche, was ich versucht habe .. Arbeiten für Standorte relativ näher zusammen. Wenn die beiden Standorte jedoch weit voneinander entfernt sind, muss die Karte gescrollt werden, um gesehen zu werden. Übrigens, die Karte ist bereits auf dem niedrigsten Zoom. – Hassan