Ich habe eine Liste von LatLng Punkten, die ich als Markierungen auf einer GoogleMap anzeigen möchte. mir derzeit Berechnung eine Kameraansicht, die die folgende Art und Weise all meine Punkte paßt:Erstellen von CameraUpdate von Punkten und Auffüllen, um Markierungen schön anzuzeigen
Zuerst habe ich berechnen eine LatLngBounds mit allen meinen Punkten.
Iterator<LatLng> i = items.iterator(); LatLngBounds.Builder builder = LatLngBounds.builder(); while (i.hasNext()) { builder.include(i.next()); } LatLngBounds bounds = builder.build();
Dann benutze ich die entsprechende Methode:
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padding);
Das Update bietet einen guten Blick auf alle meine Punkte, mit einigen netten Polsterung.
Frage
Ich möchte verschiedene Werte für paddingTop, paddingBottom, paddingLeft und paddingRight anzuwenden. Nämlich, ich habe nichts auf beiden Seiten, dann habe ich oben eine schwebende Werkzeugleiste (ca. 50dp
) und eine schwebende Karte unten (ca. 200dp
).
Wenn ich keine Polsterung hinzufüge, werden einige der Punkte von der oberen Symbolleiste oder von der unteren Karte abgedeckt.
Wenn ich die maximale Füllung hinzufügen (200dp
), dann gibt es große Lücken oben, links und rechts. Irgendeine Idee?
__________________________
| ___________o__________ |
| | | |
| |____________________|o|
| o |
| o |
| o |
| MAP |
| o |
| o |
| ______________________ |
| | | |
|o| | |
| | |o|
| |____________________| |
|____________________o___|
Meine einzige Idee ist gerade erhalten die Karte Breite in Pixel, die Karte Breite in Lng (nicht gut definiert) erhalten, finden die Pixel/lng-Verhältnis, gewünschte Polsterung aus Pixeln zu lng konvertieren und recompute LatLngBounds fügt einen falschen Punkt (einen für jede Seite) hinzu, der von meinen ursprünglichen Grenzen entfernt ist.