ポップオーバーは、指定された位置で地図の上に情報ふきだし ウィンドウを開き、コンテンツ(通常はテキストまたは画像)を表示します。ポップオーバーには、コンテンツ領域と先細の突起部分があります。突起部分の先端が、地図上の指定された場所に付着しています。
通常、ポップオーバーは
マーカーに.popover
修飾子を使用してアタッチしますが、高度を指定した特定のLatLng座標
にアタッチしたり、マーカーからオフセットしたりすることもできます。
ポップオーバーを追加する
ポップオーバーを追加するには、Popover エンティティを作成し、位置や高度モードなどのオプションを設定します。位置は LatLngAltitude オブジェクトで、ポップオーバーが表示される場所を決定します。高度モードを設定すると、LatLngAltitude でアンカーを設定する際の高度の解釈方法を制御できます。マーカーにアンカーを設定する場合は、マーカーの位置が使用されます。
ポップオーバーのコンテンツは、SwiftUI Views を使用してカスタマイズできます。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()
}
}
}
}