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

Geländeüberlagerungen

Geländeüberlagerungen sind Bildüberlagerungen, die an Breiten-/Längenkoordinaten gebunden sind, so dass sie beim Ziehen oder Vergrößern der Karte verschoben werden.

Codebeispiele

Das ApiDemos-Repository auf GitHub enthält ein Beispiel, in dem Geländeüberlagerungen demonstriert werden:

Einführung

Geländeüberlagerungen sind Bilder, die fest mit einer Karte verbunden sind. Im Gegensatz zu [Markern] sind Geländeüberlagerungen an der Erdoberfläche ausgerichtet und nicht am Bildschirm; das Drehen, Neigen oder Vergrößern der Karte verändert somit die Ausrichtung des Bilds. Geländeüberlagerungen sind hilfreich, um ein einzelnes Bild in einem Bereich der Karte zu fixieren. Wenn Sie umfangreiches Bildmaterial hinzufügen möchten, das einen großen Teil der Karte abdeckt, sollten Sie eine Kachelüberlagerung in Erwägung ziehen.

Überlagerungen hinzufügen

Um GroundOverlay hinzuzufügen, erstellen Sie ein ObjektGroundOverlayOptions, mit dem ein Bild und eine Position definiert werden. Optional können Sie weitere Einstellungen festlegen, die sich auf die Positionierung des Bildes auf der Karte auswirken. Nachdem Sie die erforderlichen Optionen definiert haben, übergeben Sie das Objekt an die Methode GoogleMap.addGroundOverlay(), um das Bild zur Karte hinzuzufügen. Von der Methode addGroundOverlay() wird ein Objekt GroundOverlay zurückgegeben; behalten Sie einen Verweis auf dieses Objekt, falls Sie es zu einem späteren Zeitpunkt bearbeiten möchten.

Hinweis: Beim Hinzufügen des Bilds zur Karte wird es in ein Bild mit Seiten mit einer Zweierpotenz konvertiert. Sie können diese Konvertierung vermeiden, indem Sie ein Originalbild mit Maßen einer Zweierpotenz verwenden, z. B. 128x512 oder 1024x1024.

Schritte:

  1. Instanziieren Sie ein neues Objekt GroundOverlayOptions
  2. Definieren Sie das Bild als BitmapDescriptor.
  3. Legen Sie die Position des Bildes mithilfe einer der verfügbaren Methoden fest:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. Definieren Sie bei Bedarf optionale Eigenschaften, z. B. transparency.
  5. Rufen Sie GoogleMap.addGroundOverlay() auf, um das Bild zur Karte hinzuzufügen.

Im nachfolgenden Beispiel wird gezeigt, wie eine Geländeüberlagerung zu einem vorhandenen Objekt GoogleMap hinzugefügt wird.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

Um Geländeüberlagerungen nach dem Hinzufügen zur Karte ändern oder entfernen zu können, muss Ihnen das Objekt GroundOverlay bekannt sein. Sie können die Überlagerung zu einem späteren Zeitpunkt bearbeiten, indem Sie Änderungen an diesem Objekt vornehmen.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

Überlagerungen entfernen

Um Geländeüberlagerungen zu entfernen, verwenden Sie die Methode GroundOverlay.remove().

imageOverlay.remove();

Überlagerungen ändern

Sie können Geländeüberlagerungen nach dem Hinzufügen zur Karte ändern, indem Sie die Methode GroundOverlay.setImage(BitmapDescriptor) aufrufen.

// Add an overlay, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Update the GroundOverlay with a new image of the same dimensions.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

Mit der Methode setImage() wird ein vorhandenes Bild durch ein Bild mit denselben Maßen ersetzt.

Geländeüberlagerungen positionieren

Es gibt zwei Möglichkeiten, um Geländeüberlagerungen zu positionieren.

  • Mithilfe eines Werts LatLng, um die Überlagerung zu zentrieren, und mithilfe von Maßen in Metern, um die Größe des Bilds festzulegen.
  • Mithilfe von LatLngBounds, um die nordöstliche und die südwestliche Ecke des Bilds zu definieren.

Sie müssen die Position der Geländeüberlagerung angeben, bevor Sie die Überlagerung zur Karte hinzufügen.

Standort zur Positionierung von Bildern verwenden

Beim Hinzufügen des Bilds geben Sie einen Wert „LatLng“ an, an dem das Bild verankert wird, sowie die Breite der Überlagerung (in Metern). Standardmäßig ist anchor die untere Mitte des Bildes. Optional können Sie die Höhe der Überlagerung (in Metern) angeben. Wenn Sie für die Überlagerung keine Höhe angeben, wird sie automatisch so berechnet, dass das Seitenverhältnis des Bilds beibehalten wird.

Mit dem nachfolgenden Code wird ein Bild an der Position 40.714086, -74.228697, d. h. mit einer Breite von 8,6 km und einer Höhe von 6,5 km positioniert. Das Bild wird unten links verankert.

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .anchor(0, 1)
        .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

„LatLngBounds“ zur Positionierung von Bildern verwenden

Sie geben einen Wert LatLngBounds an, der das Bild enthält. Mithilfe von LatLngBounds werden die nordöstliche und die südwestliche Ecke des Bilds definiert. Wenn das Bild auf der Karte platziert wird, wird es so gedreht, dass es in den Begrenzungsrahmen passt. Wenn der Begrenzungsrahmen nicht mit dem ursprünglichen Begrenzungsrahmen übereinstimmt, wird das Bild verzerrt.

Mit dem nachfolgenden Code wird ein Bild mit einer südwestlichen Begrenzung an 40.712216,-74.22655 und einer nordöstlichen Begrenzung an 40.773941, -74.12544 eingefügt.

LatLngBounds newarkBounds = new LatLngBounds(
        new LatLng(40.712216, -74.22655),       // South west corner
        new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .positionFromBounds(newarkBounds);

Geländeüberlagerungsereignisse verarbeiten

Standardmäßig sind Geländeüberlagerungen nicht klickbar. Sie können die Klickbarkeit aktivieren bzw. deaktivieren, indem Sie GroundOverlay.setClickable(boolean) aufrufen.

Verwenden Sie einen OnGroundOverlayClickListener, um auf Klickereignisse auf eine klickbare Geländeüberlagerung zu reagieren. Um diesen Listener auf der Karte einzurichten, rufen Sie GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener) auf. Wenn ein Nutzer auf eine Geländeüberlagerung klickt, erhalten Sie einen Callback onGroundOverlayClick(GroundOverlay).



Feedback geben zu...

Google Maps Android API
Google Maps Android API