获取用户位置的MKAnnotationView

时间:2018-10-28 16:22:42

标签: ios swift mapkit mkuserlocation

我试图获取 MKAnnotationView ,该视图在MapKit中显示用户位置(蓝点)以添加自定义手势识别器。这可能吗?

我已经尝试过使用委托方法,但是当我没有标识符字符串时,我不知道如何使视图出队。如果我有标识符,则可能可以执行以下代码;

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

    if annotation is MKUserLocation {
        let userLocationAnnotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "??", for: annotation)
        userLocationAnnotationView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.handleStuff)))
        return userLocationAnnotationView
    }
}

编辑

啊,坚持了几个小时,在我发布后直接找到了解决方案。我发现了两种使用委托方法解决问题的方法。第一种方法可以通过 didSelect

func mapView(_ mapView: MKMapView,
             didSelect view: MKAnnotationView){
    if view.annotation is MKUserLocation {
        // User clicked on the blue dot
    }
}

或者,如果需要手势识别器,可以按照以下步骤进行操作。可能应该添加一个检查,因为自从每次添加注释视图时都会调用此函数,因此是否已经添加了手势识别器。

func mapView(_ mapView: MKMapView,
                      didAdd views: [MKAnnotationView]){
    for view in views {
        if view.annotation is MKUserLocation {
            view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.handleStuff)))
        }
    }
}

0 个答案:

没有答案