Kullanıcı, Map üzerinde bir önemli yere (ÖY) dokunduğunda iOS için Haritalar 3D SDK'sı (GoogleMaps3DKit), bu ÖY için bir Konum widget'ı gösterir. Dokunma etkinliklerini dinleyebilir ve onTap(_:), onPlaceTap(_:) ve placeInformationEnabled(_:) kullanarak bu widget'ın gösterilip gösterilmeyeceğini kontrol edebilirsiniz.
Dokunma etkinliklerini dinleme
Bir Map öğesindeki dokunma etkinliklerini dinlemek için onTap(_:) değiştiricisini uygulayın.
Kullanıcı haritaya dokunduğunda kapanış, aşağıdaki özellikleri içeren bir MapTapInfo nesnesi alır:
location: Dokunmanın coğrafi koordinatlarını ve rakımını temsil edenLatLngAltitude.content: Neye dokunulduğunu gösterenMapTapInfo.Contentdeğeri:MapTapInfo.Content.map: Dokunma, temel haritaya isabet etti.MapTapInfo.Content.place(id:): Dokunma işlemi bir yere isabet etti ve benzersiz yer kimliğini (String) sağladı.
Places kullanıcı arayüzü widget'ını kontrol etme
Bir yere dokunulduğunda yerleşik Yerler kullanıcı arayüzü widget'ının gösterilip gösterilmeyeceğini kontrol etmek için Map öğesine onPlaceTap(_:) uygulayın. Kapatma, dokunulan placeId (String) öğesini alır ve bir PlaceTapAction döndürür:
- Return
.default: Yerleşik Places kullanıcı arayüzü widget'ını gösterir. - Return
.none: Yerleşik Places UI widget'ını gizler.
Aşağıdaki örnekte, dokunma etkinlikleri dinlenir ve varsayılan Places kullanıcı arayüzü widget'ı gizlenir:
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
@State private var camera = Camera(center: .init(latitude: 37.7749, longitude: -122.4194))
var body: some View {
Map(camera: $camera, mode: .hybrid)
.onPlaceTap { placeId in
// Suppress the built-in Places UI widget
.none
}
.onTap { tapInfo in
switch tapInfo.content {
case .map:
print("Tapped map at \(tapInfo.location)")
case .place(let placeId):
print("Tapped place \(placeId) at \(tapInfo.location)")
}
}
}
}
Map üzerindeki tüm ÖY dokunmaları için yerleşik yer bilgi kartını devre dışı bırakmak istiyorsanız false değerini placeInformationEnabled(_:) yöntemine iletin:
import GoogleMaps3DKit
import SwiftUI
struct ContentView: View {
var body: some View {
Map(mode: .hybrid)
.placeInformationEnabled(false)
}
}