2016-04-14 6 views
0

Я пытаюсь получить координаты точки на карте с помощью функции touchhesBegan и tapGesture, но координаты, которые я получаю, представляют собой точку, отличную от выбранной на карте. Любая помощь, пожалуйста?Выбор местоположения на карте дает неправильные координаты

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) 

    } 

ответ

0

Замените код следующим образом:

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)") 
} 

в вашем viewDidLoad, добавьте tapGesture к вашему MAPview, например, так:

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

Дорогой khuong291, спасибо. Это сработало. – Simon

+0

Хорошо ли работает? – Khuong

+0

Это сработало хорошо. Спасибо. – Simon

Смежные вопросы