Maps SDK for Android-Dienstprogrammbibliothek

Du möchtest erweiterte Funktionen für deine Karten implementieren? Die Maps SDK for Android-Dienstprogrammbibliothek ist eine Open-Source-Bibliothek mit Klassen, die für eine Reihe von Anwendungen nützlich sind. Das GitHub-Repository enthält die Dienstprogrammklassen und eine Demo-App, in der die Verwendung der einzelnen Klassen gezeigt wird.

In diesem Video erörtert Chris Broadfoot die Dienstprogrammbibliothek, wobei der Schwerpunkt auf der Decodierung von Polylinien, der sphärischen Geometrie und den Infofeldsymbolen liegt.

Schnelle Einrichtung

Ein Installationsanleitung findest du unter Maps SDK for Android-Dienstprogramm einrichten.

Die Dienstprogramme

Eine Karte mit einer GeoJSON-Ebene

GeoJSON in deine Karte importieren

Du kannst Elemente im GeoJSON-Format speichern und mit diesem Dienstprogramm als Ebene über einer Karte rendern. Rufe addLayer() auf, um deine GeoJSON-Daten der Karte hinzuzufügen. Außerdem hast du die Möglichkeit, einzelne Elemente hinzuzufügen, indem du addFeature() aufrufst und ein GeoJsonFeature-Objekt übergibst.

Weitere Informationen findest du in der Dokumentation zum Google Maps Android GeoJSON-Dienstprogramm.

Eine Karte mit einer KML-Ebene

KML in deine Karte importieren

Mit diesem Dienstprogramm kannst du KML-Objekte in geografische Formen umwandeln und als Ebene über einer Karte rendern. Rufe addLayerToMap() auf, um deine Ebene der Karte hinzuzufügen. Um auf die Attribute eines KML-Objekts zuzugreifen, rufst du getProperties() für jede Ortsmarkierung, jedes Boden-Overlay, jedes Dokument oder jeden Ordner auf.

Weitere Informationen findest du in der Dokumentation zum Google Maps-Dienstprogramm für den KML-Import.

Eine Karte mit einer Heatmap

Heatmaps zu einer Karte hinzufügen

Mit Heatmaps können Nutzer die Verteilung und relative Intensität von Datenpunkten auf einer Karte leichter erkennen. Statt eine Markierung an jedem Standort zu platzieren, verwenden Heatmaps Farben und Formen, um die Verteilung von Daten darzustellen. Erstelle ein HeatmapTileProvider und übergebe eine Sammlung von LatLng-Objekten, die POIs auf der Karte darstellen. Erstelle dann ein neues TileOverlay, übergebe den Heatmap-Kachelanbieter und füge das Kachel-Overlay der Karte hinzu.

Weitere Informationen findest du in der Dokumentation zum Google Maps Android-Heatmap-Dienstprogramm.

Eine Karte mit Infofeldsymbolen

Markierung mithilfe von Infofeldsymbolen anpassen

Füge ein IconGenerator-Objekt hinzu, um Snippets mit Informationen auf deinen Markierungen anzuzeigen. Mit diesem Dienstprogramm gibt es eine Möglichkeit, Markierungssymbole so anzupassen, dass sie Infofenstern dahingehend ähneln, dass die Markierung selbst Text und andere Inhalte enthalten kann. Der Vorteil besteht darin, dass mehrere Markierungen gleichzeitig geöffnet sein können, während immer nur ein Infofenster gleichzeitig angezeigt werden kann. Du kannst außerdem Markierungen formatieren und ihre Ausrichtung und/oder Inhalte ändern und das Hintergrundbild (9-Patch-Datei) der Markierung austauschen.

Markierungs-Cluster auf einer Karte

Markierungs-Cluster verwalten

Mit ClusterManager kannst du mehrere Markierungen bei verschiedenen Zoomfaktoren verwalten. Du kannst also eine große Anzahl Markierungen auf einer Karte setzen, ohne die Lesbarkeit der Karte zu stark zu beeinträchtigen. Wenn ein Nutzer eine Karte mit einer großen Zoomstufe aufruft, werden die einzelnen Markierungen auf der Karte angezeigt. Zoomt er heraus, werden die Markierungen zu Clustern zusammengefügt, damit sich die Karte besser betrachten lässt.

Weitere Informationen findest du in der Dokumentation zum Markierungs-Clustering-Dienstprogramm in Google Maps Android.

Eine Karte mit mehreren Ebenen

Mehrere Ebenen derselben Karte hinzufügen

Du kannst Elemente aus GeoJSON, KML und Clustern sowie Ihre eigenen Markierungen, Polylinien und Polygone auf derselben Karte anzeigen. Diese Ebenen können auch interaktiv gestaltet werden, indem jeder Ebene ein Klick-Listener hinzugefügt wird. Instanziiere einfach die Klassen MarkerManager, GroundOverlayManager, PolygonManager und PolylineManager und übergebe sie an die Konstruktoren von GeoJsonLayer, KmlLayerund ClusterManager. Anschließend kannst du die oben genannten Manager-Klassen direkt verwenden, um der Karte eigene Markierungen, Polylinien und Polygone hinzuzufügen.

Weitere Informationen findest du in der Dokumentation zum Dienstprogramm für mehrere Ebenen in Google Maps.

Eine codierte Polylinie auf einer Karte

Polylinien codieren und decodieren

PolyUtil ist nützlich, um codierte Polylinien und Polygone in Breiten- und Längengradkoordinaten zu konvertieren und umgekehrt.

In Google Maps werden Breiten- und Längengrade für Polylinien und Polygone als codierter String gespeichert. Weitere Informationen zur Polyliniencodierung findest du in der ausführlichen Beschreibung. Dieser codierte String kann in einer Antwort von einer Google API zurückgegeben werden, z. B. der Directions API.

Du kannst PolyUtil in der Maps SDK for Android-Dienstprogrammbibliothek verwenden, um eine Folge von Breiten-/Längengradkoordinaten ('LatLngs') in einen codierten Pfadstring zu codieren und einen codierten Pfadstring in eine Sequenz von LatLngs. Auf diese Weise wird die Interoperabilität mit den Webdiensten der Google Maps APIs sichergestellt.

Berechnete Entfernung zwischen zwei Punkten auf einer Karte

Entfernungen, Bereiche und Richtungen über sphärische Geometrie berechnen

Mit den Dienstprogrammen für sphärische Geometrie in SphericalUtil kannst du Entfernungen, Gebiete und Überschriften anhand von Breiten- und Längengraden berechnen. Nachfolgend sind einige der im Dienstprogramm verfügbaren Methoden aufgeführt:

  • computeDistanceBetween(): gibt die Entfernung zwischen zwei Breiten-/Längengradkoordinaten in Metern zurück
  • computeHeading(): gibt die Neigung zwischen zwei Breiten-/Längengradkoordinaten in Grad zurück
  • computeArea(): Gibt die Fläche eines geschlossenen Pfads auf der Erde in Quadratmetern zurück
  • interpolate(): Gibt die Breiten-/Längengrad-Koordinaten eines Punkts zurück, der an einem bestimmten Bruchteil der Entfernung zwischen zwei angegebenen Punkten liegt Du kannst diese Methode verwenden, um beispielsweise eine Markierung zwischen zwei Punkten zu animieren.

Eine vollständige Liste der Methoden im Dienstprogramm findest du in der Referenzdokumentation.