2017-05-09 2 views
2

Ich habe Problem mit google Kartenmarkierungen, ich möchte Markierung auf Note setzen, aber ich weiß nicht, wie man es behandelt Ich versuchte ein paar Weg, aber es funktioniert nicht, nichts passiert dann ich Tippen Sie auf die Karte. Es scheint etwas falsch mit PressRecoverizer.Swift 3 google map addieren Marker auf Note

Aktualisiert:

class MainMapController: UIViewController, CLLocationManagerDelegate { 

@IBOutlet weak var viewMap: GMSMapView! 
var makers: [GMSMarker] = [] 

var locationManager = CLLocationManager() 

override func viewDidLoad() { 
    super.viewDidLoad() 


    initializeTheLocationManager() 
    self.viewMap.isMyLocationEnabled = true 
    let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress)) 
    self.viewMap.addGestureRecognizer(longPressRecognizer) 


} 

    func handleLongPress(recognizer: UILongPressGestureRecognizer) 
    { 
if (recognizer.state == UIGestureRecognizerState.began) 
{ 
    let longPressPoint = recognizer.location(in: self.viewMap); 
    let coordinate = viewMap.projection.coordinate(for: longPressPoint) 
    let marker = GMSMarker(position: coordinate) 
    marker.opacity = 0.6 
    marker.title = "Current Location" 
    marker.snippet = "" 
    marker.map = viewMap 
    makers.append(marker) 
    } 
    } 


func initializeTheLocationManager() 
{ 
    locationManager.delegate = self 
    locationManager.requestWhenInUseAuthorization() 
    locationManager.startUpdatingLocation() 
} 


func locationManager(_ manager: CLLocationManager,  didUpdateLocations locations: [CLLocation]) { 

    var location = locationManager.location?.coordinate 

    cameraMoveToLocation(toLocation: location) 
    locationManager.stopUpdatingLocation()  
}  
func cameraMoveToLocation(toLocation: CLLocationCoordinate2D?) { 
    if toLocation != nil { 
     viewMap.camera = GMSCameraPosition.camera(withTarget: toLocation!, zoom: 15)   
    } 
    } 
+0

viewMap ist ein GMSMapView? –

+0

Ja, Sie haben Recht –

+0

Ich habe versucht und nichts passiert, als ich auf die Karte klopfte –

Antwort

5

Sie sollten nicht Geste recognisers manuell für Google Maps hinzufügen, es schafft es Wechselwirkungen selbst ist und hat delegieren Funktionen gewidmet gemeinsame Gesten zu verarbeiten.

einen langen Druck auf einem GSMMapView Dazu sicherzustellen, dass Sie die Delegaten

self.mapView.delegate = self 

gesetzt und dann

die entsprechende Delegatfunktion verdrahten
extension ViewController: GMSMapViewDelegate { 
    func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) { 
     // Custom logic here 
     let marker = GMSMarker() 
     marker.position = coordinate 
     marker.title = "I added this with a long tap" 
     marker.snippet = "" 
     marker.map = mapView 
    } 
} 

Der obigen Code eine Markierung an der Stelle hinzufügen, wird Sie haben lange gedrückt, Sie können auch einen Titel und ein Snippet hinzufügen, wie Sie sehen können. der Teil, der sie tatsächlich zur Karte hinzufügt, ist marker.map = mapView

+0

Ich habe versucht, das hinzuzufügen, aber wenn ich auf Karte tapp nichts passiert. –

+0

Sie tun einen langen Tipp? Ich habe ein Beispielprojekt hier mit diesem Code in und es funktioniert gut für mich – Scriptable

+0

Ja, ich bin, und nichts passiert, können Sie mir es zeigen? –