Es kann losgehen!

Bevor Sie mit der Entwicklung beginnen, lesen Sie bitte unsere Entwicklerdokumentation.

Die Google Maps Android API aktivieren

Zum Einstieg führen wir Sie durch die Google Developers Console, wo Sie vorab Folgendes tun müssen:

  1. Ein Projekt erstellen oder auswählen
  2. Die Google Maps Android API aktivieren
  3. Zugehörige Schlüssel erstellen
Weiter

Google Maps-Hilfsprogramm für den KML-Import

  1. Einführung
  2. KML-Ebenen hinzufügen
  3. KML-Ebenen entfernen
  4. KML-Container aufrufen
  5. KML-Ortsmarken und KML-Geländeüberlagerungen aufrufen
  6. KML-Eigenschaften aufrufen
  7. Durch KML unterstützte Funktionen

Einführung

KML ist eine Erweiterung des XML-Datenformats und repräsentiert geografische Daten auf einer Karte. Mit diesem Hilfsprogramm können Sie KML-Objekte in geografische Formen umwandeln und als Ebene wiedergeben, die über die Karte gelegt wird. Um Ihre KML-Daten zur Karte hinzuzufügen bzw. daraus zu entfernen, rufen Sie addLayerToMap() bzw. removeLayerFromMap() auf. Um auf die Eigenschaften eines KML-Objekts zuzugreifen, rufen Sie getProperties() für beliebige Ortsmarken, Geländeüberlagerungen, Dokumente oder Verzeichnisse auf.

KML-Ebenen zur Karte hinzufügen

Um eine Datenebene zur Karte hinzuzufügen, erstellen Sie zunächst eine Instanz der Klasse KmlLayer. Es gibt zwei Möglichkeiten, um KmlLayer zu instanziieren.

Um einen KML-Datensatz aus einer lokalen Ressource zu importieren und wiederzugeben, benötigen Sie Folgendes:

  • Ein Objekt GoogleMap, in dem die Ebene wiedergegeben werden soll.
  • Eine lokale Ressourcendatei mit den KML-Daten.
  • Ein Objekt Context, das zum Öffnen einer lokalen Ressourcendatei erforderlich ist.
KmlLayer layer = new KmlLayer(getMap(), R.raw.kmlFile, getApplicationContext());

Um einen KML-Datensatz aus einem lokalen Stream zu importieren und wiederzugeben, benötigen Sie Folgendes:

  • Ein Objekt GoogleMap, in dem die Ebene wiedergegeben werden soll.
  • Ein Objekt InputStream mit den KML-Daten.
  • Ein Objekt Context, das zum Öffnen von lokalen Ressourcen erforderlich ist.
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

Nachdem Sie KmlLayer erstellt haben, rufen Sie addLayerToMap()() auf, um die importierten Daten in die Karte zu importieren.

layer.addLayerToMap();

KML-Ebenen entfernen

Angenommen, Sie haben folgende KML-Ebene (KmlLayer) erstellt:

KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());
 

Um die Ebene aus der Karte zu entfernen, rufen Sie removeLayerFromMap() auf:

layer.removeLayerFromMap();

KML-Container aufrufen

Um Container aufzurufen, die zu Ihrer Ebene hinzugefügt wurden, können Sie für die von Ihnen erstellte Ebene getContainers() aufrufen. Um zu überprüfen, ob ein Container über geschachtelte Container verfügt, können Sie hasContainers() aufrufen. Um diese geschachtelten Container aufzurufen, rufen Sie, ähnlich wie beim Bearbeiten der Ebene, getContainers() auf.

So rufen Sie Container auf, die nicht in KmlLayer oder KmlContainer geschachtelt sind:

for (KmlContainer containers : layer.getContainers())
  // Do something to container
}

So rufen Sie in KmlLayer oder KmlContainer geschachtelte Container auf:

Iterable containers = layer.getContainers();
  public void accessContainers(containers) {
    for (KmlContainer container : containers ) {
    // Do something to container
    if (container.hasContainers()) {
      accessContainers(container.getContainers());
    }
  }
}

KML-Ortsmarken und KML-Geländeüberlagerungen aufrufen

Um auf Ortsmarken oder Geländeüberlagerungen zuzugreifen, die zur Ebene hinzugefügt wurden, rufen Sie getPlacemarks() oder getGroundOverlays() für eine Ebene oder einen Container auf. Der Aufruf gibt ein Iterable von KmlPlacemarks bzw. KmlGroundOverlays zurück.

So rufen Sie beispielsweise ein Objekt KmlPlacemark aus einer Ebene auf:

for (KmlPlacemark placemark : layer.getPlacemarks()) {
  // Do something to Placemark
}

KML-Eigenschaften aufrufen

Um auf eine Eigenschaft in einem Container oder Ortsmarke zuzugreifen, rufen Sie getProperty() auf, und übergeben Sie einen Eigenschaftenschlüssel. Sie können auch hasProperty() aufrufen, um zu überprüfen, ob die Eigenschaft existiert. Im nachfolgenden Beispiel wird gezeigt, wie Sie den Eigenschaftswert „name“ aus einem Container abrufen, sofern die Eigenschaft existiert.

for (KmlContainer container : layer.getContainers()) {
  if (container.hasProperty("name")) {
    System.out.println(container.getProperty("name")):
  }
}

Demo-App anzeigen

Ein Beispiel zum Importieren einer KML-Datei und zum Erstellen einer Ebene mithilfe dieser Datei finden Sie in der Demo-App, die mit der Hilfsprogrammbibliothek ausgeliefert wird, unter KmlDemoActivity. Im Einrichtungsleitfaden erhalten Sie Informationen zum Ausführen der Demo-App.

Durch KML unterstützte Funktionen

KML-Element Unterstützt? Anmerkung
<address> Teilweise Hinterlegt als Eigenschaftswert.
<AddressDetails> Nein
<Alias> Nein
<altitude> Nein
<altitudeMode> Nein
<atom:author> Nein
<atom:link> Nein
<atom:name> Nein
<BalloonStyle> Teilweise Nur <text> wird unterstützt.
<begin> - <TimeSpan> wird nicht unterstützt.
<bgColor> Nein
<bottomFov> - <PhotoOverlay> wird nicht unterstützt.
<Camera> Nein
<Change> Teilweise Nur Formatänderungen werden unterstützt.
<color> Teilweise Umfasst #AABBGGRR und #BBGGRR; nicht unterstützt in <ScreenOverlay> und <GroundOverlay>.
<colorMode> Ja
<cookie> Nein <NetworkLinkControl> wird nicht unterstützt.
<coordinates> Ja
<Create> Nein
<Data> Nein
<Delete> Nein
<description> Ja Nur Volltext, HTML-Inhalt wird nicht unterstützt.
<displayMode> Nein
<displayName> Nein
<Document> Ja
<drawOrder> Ja
<east> Ja
<end> - <TimeSpan> wird nicht unterstützt.
<expires> Nein <NetworkLinkControl> wird nicht unterstützt.
<ExtendedData> Teilweise <Data> nur nicht typisiert, nicht <SimpleData> oder <Schema>, und Entitätsersetzungen von form$[dataName] werden nicht unterstützt.
<extrude> Nein
<fill> Ja
<flyToView> Nein <NetworkLinkControl> wird nicht unterstützt.
<Folder> Ja
<gridOrigin> - <PhotoOverlay> wird nicht unterstützt.
<GroundOverlay> Ja
<heading> Ja
<hotSpot> Ja
<href> Ja
<httpQuery> Nein
<Icon> Ja
<IconStyle> Ja
<ImagePyramid> - <PhotoOverlay> wird nicht unterstützt.
<innerBoundaryIs> Ja Implizit aus Reihenfolge <LinearRing>
<ItemIcon> - <ListStyle> wird nicht unterstützt.
<key> Ja
<kml> Ja
<LabelStyle> Nein
<latitude> Ja
<LatLonAltBox> Nein
<LatLonBox> Ja
<leftFov> - <PhotoOverlay> wird nicht unterstützt.
<LinearRing> Ja
<LineString> Ja
<LineStyle> Ja
<Link> Nein
<linkDescription> - <NetworkLinkControl> wird nicht unterstützt.
<linkName> - <NetworkLinkControl> wird nicht unterstützt.
<linkSnippet> - <NetworkLinkControl> wird nicht unterstützt.
<listItemType> - <ListStyle> wird nicht unterstützt.
<ListStyle> Nein
<Location> - <Model> wird nicht unterstützt.
<Lod> Ja
<longitude> Ja
<LookAt> Nein
<maxAltitude> Nein
<maxFadeExtent> Nein
<maxHeight> - <PhotoOverlay> wird nicht unterstützt.
<maxLodPixels> Nein
<maxSessionLength> Nein
<maxWidth> - <PhotoOverlay> wird nicht unterstützt.
<message> Nein
<minAltitude> Nein
<minFadeExtent> Nein
<minLodPixels> Nein
<minRefreshPeriod> Nein <NetworkLink>
<Model> Nein
<MultiGeometry> Ja
<name> Ja
<near> - <PhotoOverlay> wird nicht unterstützt.
<NetworkLink> Nein
<NetworkLinkControl> Nein
<north> Ja
<open> Ja Hinterlegt als Eigenschaftswert.
<Orientation> - <Model> wird nicht unterstützt.
<outerBoundaryIs> Ja Implizit aus Reihenfolge <LinearRing>
<outline> Ja
<overlayXY> Nein
<Pair> Ja
<phoneNumber> Teilweise Hinterlegt als Eigenschaftswert.
<PhotoOverlay> Nein
<Placemark> Ja
<Point> Ja
<Polygon> Ja
<PolyStyle> Ja
<range> Ja
<refreshInterval> Nein
<refreshMode> Nein
<refreshVisibility> Nein
<Region> Ja
<ResourceMap> - <Model> wird nicht unterstützt.
<rightFov> - <PhotoOverlay> wird nicht unterstützt.
<roll> - <Camera> und <Model> werden nicht unterstützt.
<rotation> Ja
<rotationXY> Nein
<Scale> - <Model> wird nicht unterstützt.
<scale> Ja
<Schema> Nein
<SchemaData> Nein
<ScreenOverlay> Nein
<screenXY> - <ScreenOverlay> wird nicht unterstützt.
<shape> - <PhotoOverlay> wird nicht unterstützt.
<SimpleData> - <SchemaData> wird nicht unterstützt.
<SimpleField> - <Schema> wird nicht unterstützt.
<size> Ja
<Snippet> Nein
<south> Ja
<state> - <ListStyle> wird nicht unterstützt.
<Style> Ja
<StyleMap> Teilweise Hervorgehobene Formate nicht verfügbar Inline-StyleMaps werden nicht unterstützt.
<styleUrl> Ja
<targetHref> Nein <Alias> wird nicht unterstützt.
<tessellate> Nein
<text> Ja
<textColor> Nein
<tileSize> - <PhotoOverlay> wird nicht unterstützt.
<tilt> Nein
<TimeSpan> Nein
<TimeStamp> Nein
<topFov> - <PhotoOverlay> wird nicht unterstützt.
<Update> - <NetworkLinkControl> wird nicht unterstützt.
<value> Ja
<viewBoundScale> Nein
<viewFormat> Nein
<viewRefreshMode> Nein
<viewRefreshTime> Nein
<ViewVolume> - <PhotoOverlay> wird nicht unterstützt.
<visibility> Ja
<west> Ja
<when> - <TimeStamp> wird nicht unterstützt.
<width> Ja

Feedback geben zu...

Google Maps Android API
Google Maps Android API