3

Ich bin neu bei swift und dem Google Maps SDK und habe mich gefragt, wie ich die Koordinaten ermitteln kann, wo der Nutzer mit dem Google Maps SDK getappt hat. Wenn zum Beispiel ein Benutzer seinen Finger an einer bestimmten Stelle auf einer Karte hält, wird dort eine Anmerkung erstellt. Ich würde deine Hilfe sehr schätzen, danke.Swift - GoogleMaps SDK erhält Koordinaten bei Berührung

Antwort

8

In GMSMapViewDelegate gibt es eine Methode namens: mapView:didLongPressAtCoordinate:, die nach einer langen Druckgeste an einer bestimmten Koordinate aufgerufen wird. Siehe die Referenz here.

Durch Implementierung dieses Verfahrens könnte man dann eine Markierung auf der Karte Ansicht hinzufügen:

func mapView(mapView: GMSMapView!, didLongPressAtCoordinate coordinate: CLLocationCoordinate2D) { 
    let marker = GMSMarker(position: coordinate) 
    marker.title = "Hello World" 
    marker.map = mapView 
} 

Für eine Tippgeste ein ähnliches Delegatmethode implementiert werden kann mapView:didTapAtCoordinate: genannt, die in ähnlicher Weise verwendet werden können:

func mapView(mapView: GMSMapView!, didTapAtCoordinate coordinate: CLLocationCoordinate2D) { 
    print("Tapped at coordinate: " + String(coordinate.latitude) + " " 
            + String(coordinate.longitude)) 
} 
+0

Was passiert, wenn der Benutzer lange auf bestehende Marker drückt? Wie kann ich den Benutzer auf einen Marker oder eine Karte drücken? –

+0

Mit der GMSMapViewDelegate mapView: didTapMarker: -Methode können Sie ein Tippen auf eine Markierung erkennen. Leider gibt es keine Methode zum Erkennen von langen Drücken auf Marken im Delegaten. Daher müssten Sie die mapView: didLongPressAtCoordinate: -Methode verwenden und dann Ihren Marker basierend auf seinem Positionsattribut identifizieren, wahrscheinlich indem Sie die Koordinaten des Markers durchgehen und mit der Koordinate vergleichen, die der Benutzer lange gedrückt hat. Siehe hier: https://developers.google.com/maps/documentation/ioss-sdk/reference/interface_g_m_s_marker.html#a2b9fdae0160d7acf439889ffcdb5f68b –

Verwandte Themen