2016-04-14 6 views
0

Ich versuche, die Koordinaten eines Punktes auf der Karte mit der touchesBegan-Funktion und der tapGesture zu erhalten, aber die Koordinaten, die ich erhalte, repräsentieren einen anderen Punkt als den ausgewählten auf der Karte. Irgendwelche Hilfe bitte?Die Auswahl eines Ortes auf einer Karte ergibt falsche Koordinaten

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     let tapGesture = UITapGestureRecognizer(target: self, action: nil) 
     let touchPoint = tapGesture.locationInView(self.myMap) 
     let location = self.myMap.convertPoint(touchPoint, toCoordinateFromView: self.myMap) 

     let mySpan:MKCoordinateSpan = MKCoordinateSpanMake(0.5, 0.5) 
     let region:MKCoordinateRegion = MKCoordinateRegionMake(location, mySpan) 
     self.myMap.setRegion(region, animated: true) 

     lblLat.text = String(location.latitude) 
     lblLng.text = String(location.longitude) 

    } 

Antwort

0

Ersetzen Sie den Code mit diesem:

func tapGestureOnMap(gestureRecognizer: UITapGestureRecognizer) { 
     let touchLocation = gestureRecognizer.locationInView(mapView) 
     let locationCoordinate = mapView.convertPoint(touchLocation, toCoordinateFromView: mapView) 
     print("Tapped at lat: \(locationCoordinate.latitude) long: \(locationCoordinate.longitude)") 
} 

in Ihrem viewDidLoad, eine tapGesture zu Ihrem mapView hinzufügen, etwa so:

let tapGestureOnMap = UITapGestureRecognizer(target: self, action: "tapGestureOnMap:") 
mapView.addGestureRecognizer(tapGestureOnMap) 
+0

Lieber khuong291, Thank you very much. Es funktionierte. – Simon

+0

Funktioniert es gut? – Khuong

+0

Es hat gut funktioniert. Vielen Dank. – Simon