ポップオーバー

プラットフォームを選択: Android iOS JavaScript

サンフランシスコの地図。フェリー ビルディングの上にマーカーとポップオーバーが表示されている。

ポップオーバーは、指定された位置で情報バブル ウィンドウを地図の上に開き、コンテンツ(通常はテキストや画像)を表示します。ポップオーバーには、コンテンツ領域と先細の突起部分があります。突起部分の先端が、地図上の指定された場所に付着しています。

通常、.popover 修飾子を使用してポップオーバーをマーカーにアタッチしますが、特定の LatLng 座標に高度とともにアタッチしたり、マーカーからオフセットしたりすることもできます。

ポップオーバーを追加する

ポップオーバーを追加するには、Popover エンティティを作成し、位置や高度モードなどのオプションを設定します。位置は、ポップオーバーの表示位置を決定する LatLngAltitude オブジェクトです。LatLngAltitude でアンカーを設定する際に高度がどのように解釈されるかを制御するには、高度モードを設定します。マーカーにアンカーを設定する場合は、代わりにマーカーの位置が使用されます。

ポップオーバーのコンテンツは SwiftUI ビューを使用してカスタマイズできます。カスタム レイアウトは、View ビルダー クロージャを Popover エンティティまたは .popover 修飾子に渡すことで提供できます。

LatLngAltitude オブジェクトにポップオーバーを追加する

次のコードサンプルでは、LatLngAltitude オブジェクトにポップオーバーを追加しています。

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")
      }
    }
  }
}

マーカーにポップオーバーを追加する

次のコードサンプルでは、マーカーにポップオーバーを追加します。

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()
        }
    }
  }
}