Maps SDK for Android-Dienstprogrammbibliothek

Plattform auswählen: Android iOS

Sie möchten erweiterte Funktionen für Ihre 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 finden Sie unter Maps SDK for Android-Dienstprogramm einrichten.

Die Dienstprogramme

Eine Karte mit einer GeoJSON-Ebene

GeoJSON in deine Karte importieren

Sie können 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 haben Sie die Möglichkeit, einzelne Elemente hinzuzufügen, indem Sie addFeature() aufrufen und ein GeoJsonFeature-Objekt übergeben.

Weitere Informationen finden Sie in der Dokumentation zum Google Maps Android GeoJSON-Dienstprogramm.

Eine Karte mit einer KML-Ebene

KML in deine Karte importieren

Mit diesem Dienstprogramm können Sie KML-Objekte in geografische Formen umwandeln und als Ebene über einer Karte rendern. Rufen Sie addLayerToMap() auf, um die Ebene der Karte hinzuzufügen. Um auf die Attribute eines KML-Objekts zuzugreifen, rufen Sie getProperties() für eine Ortsmarkierung, ein Boden-Overlay, ein Dokument oder einen Ordner auf.

Weitere Informationen finden Sie 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. Erstellen Sie einen HeatmapTileProvider und übergeben Sie eine Sammlung von LatLng-Objekten, die POIs auf der Karte darstellen. Erstellen Sie dann ein neues TileOverlay, übergeben Sie den Heatmap-Kachelanbieter und nehmen Sie das Kachel-Overlay in die Karte auf.

Weitere Informationen finden Sie in der Dokumentation zum Google Maps Android Heatmap-Dienstprogramm.

Eine Karte mit Infofeldsymbolen

Markierung mithilfe von Infofeldsymbolen anpassen

Fügen Sie einen IconGenerator hinzu, um Snippets mit Informationen für Ihre 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. Es kann jedoch immer nur ein Infofenster gleichzeitig angezeigt werden. Sie können Markierungen außerdem mit einem Stil versehen, ihre Ausrichtung und/oder Inhalte ändern und ihr Hintergrundbild (9-Patch-Datei) ersetzen.

Markierungs-Cluster auf einer Karte

Markierungs-Cluster verwalten

Mit ClusterManager können Sie mehrere Markierungen bei verschiedenen Zoomfaktoren verwalten. Sie können 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 finden Sie in der Dokumentation zum Markierungs-Clustering-Dienstprogramm in Google Maps Android.

Eine Karte mit mehreren Ebenen

Mehrere Ebenen derselben Karte hinzufügen

Neben Elementen aus GeoJSON, KML und Clustern können Sie auch eigene Markierungen, Polylinien und Polygone auf einer Karte anzeigen. Die entsprechenden Ebenen lassen sich interaktiv gestalten. Dazu wird jeder Ebene ein Klick-Listener hinzugefügt. Instanziieren Sie einfach die Klassen MarkerManager, GroundOverlayManager, PolygonManager und PolylineManager und übergeben Sie sie bei der Einrichtung an die Konstruktoren von GeoJsonLayer, KmlLayer und ClusterManager. Anschließend können Sie die oben genannten Manager-Klassen direkt verwenden, um der Karte eigene Markierungen, Polylinien und Polygone hinzuzufügen.

Weitere Informationen finden Sie 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. Ausführliche Informationen finden Sie unter Algorithmusformat für codierte Polylinien. Dieser codierte String kann in einer Antwort von einer Google API zurückgegeben werden, z. B. der Directions API.

Sie können PolyUtil in der Maps SDK for Android-Dienstprogrammbibliothek verwenden, um eine Folge von Breiten- und Längengradkoordinaten ('LatLngs') in einen codierten Pfadstring zu codieren und einen codierten Pfadstring in eine Folge von Breiten- und Längengradkoordinaten zu decodieren. 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 lassen sich Entfernungen, Flächen und Neigungen anhand von Breiten- und Längengraden berechnen. Im Dienstprogramm sind u. a. folgende Methoden verfügbar:

  • computeDistanceBetween(): gibt die Entfernung zwischen zwei Breiten- und Längengradkoordinaten in Metern zurück
  • computeHeading(): gibt die Neigung zwischen zwei Breiten- und 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. Mit dieser Methode lässt sich beispielsweise eine Markierung zwischen zwei Punkten animieren.

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