当我按下地图中的任何图钉时,如何在我的标签中显示地址

时间:2016-03-18 04:57:00

标签: ios swift dictionary

我有一个具有一定纬度和经度的地图视图,它将显示地图引脚。我有一个名为address.label.text的标签。我需要的是什么?

当我按下地图中的任何latitude and longitude针脚时,我需要在latitude and longitude

中显示my label的地址

怎么做???

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要做的是将控制器指定为MapView委托并实施此方法:

func mapView(_ mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView)

点按您的图钉时会调用它。从MKAnnotationView开始,您可以获得注释,这样您就可以获得它的坐标。

这样的事情:

class MyController: UIViewController, MKMapViewDelegate {

  override func viewDidLoad() {
    super.viewDidLoad()
    mapView.delegate = self
  }

  func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
    if let coordinate = view.annotation?.coordinate {
      myLabel.text = "\(coordinate.latitude), \(coordinate.longitude)"
    }
  }

}

答案 1 :(得分:0)

要从纬度/经度获取地址,您需要使用反向地理编码功能。

func getPlacemarkFromLocation(location: CLLocation) {
    CLGeocoder().reverseGeocodeLocation(location, completionHandler: {
        (placemarks: [CLPlacemark], error) in
            // Do something with placemarks
    })
}

然后使用:

调用此方法
func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
    if let coordinate = view.annotation?.coordinate {
        let location = CLLocation(latitude: coordinate.latitiude, longitude: coordinate.longitude) 
        getPlacemarkFromLocation(location)          
    }
}

CLPlacemark个实例包含您之后的地址详细信息。