Pop-ups

Plattform auswählen: Android iOS JavaScript

Karte von San Francisco mit Markierung und Pop-over über dem Ferry Building.

In einem Popover werden Inhalte (in der Regel Text oder Bilder) für einen bestimmten Ort in einem Infofenster über der Karte angezeigt. Das Popover besteht aus einem Inhaltsbereich und einem Hinweisstrich. Der Hinweisstrich zeigt auf eine bestimmte Position auf der Karte.

Normalerweise wird ein Popover mit dem Modifikator an eine.popover Markierung angehängt. Sie können ein Popover aber auch an eine bestimmte LatLng Koordinate mit Höhe anhängen oder es von einer Markierung versetzen.

Popover hinzufügen

Erstellen Sie zum Hinzufügen eines Popovers eine Popover-Entität und legen Sie die Optionen fest, einschließlich des Positions- und Höhenmodus. Die Position ist ein LatLngAltitude-Objekt, das bestimmt, wo das Popover angezeigt wird. Sie können festlegen, wie die Höhe beim Ankern mit LatLngAltitude interpretiert wird, indem Sie den Höhenmodus festlegen. Wenn Sie an einer Markierung ankern, wird stattdessen die Position der Markierung verwendet.

Der Inhalt eines Popovers kann mit SwiftUI-Ansichten angepasst werden. Sie können benutzerdefinierte Layouts bereitstellen, indem Sie eine View-Builder-Closure an die Popover-Entität oder den Modifikator .popover übergeben.

Einem LatLngAltitude-Objekt ein Popover hinzufügen

Im folgenden Codebeispiel wird einem LatLngAltitude-Objekt ein Popover hinzugefügt:

import GoogleMaps3D
import SwiftUI

struct SimpleCoordinatePopover: View {
  @State private var isOpen = true
  // Alcatraz Island coordinates
  private let alcatraz = LatLngAltitude(latitude: 37.8270, longitude: -122.4230)

  var body: some View {
    Map(initialCamera: .init(latitude: 37.8270, longitude: -122.4230)) {
      Popover(
        positionAnchor: alcatraz,
        isOpen: $isOpen
      ) {
        Text("Alcatraz Island")
      }
    }
  }
}

Einer Markierung ein Popover hinzufügen

Im folgenden Codebeispiel wird einer Markierung ein Popover hinzugefügt:

import GoogleMaps3D
import SwiftUI

struct SimpleMarkerPopover: View {
  @State private var isOpen = false
  // Ferry Building coordinates
  private let ferryBuilding = LatLngAltitude(latitude: 37.7955, longitude: -122.3937)

  var body: some View {
    Map(initialCamera: .init(latitude: 37.7955, longitude: -122.3937)) {
      Marker(position: ferryBuilding)
        .popover(isOpen: $isOpen) {
          Text("Ferry Building")
        }
        .onTap {
          isOpen.toggle()
        }
    }
  }
}