MKMapKit PushPin 点击即可
我需要在用户点击 MKMapView 的位置放置一个图钉。要求分享为此目的的任何想法/线索/链接。谢谢。
I need to place a pushpin where a user taps on the MKMapView. Any ideas/clues/links for the purpose are requested to be shared. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
UITapRecognizer
。在手势处理程序中,您可以访问用户点击的坐标,您可以使用该坐标来创建注释。为此,您必须定义一个符合
MKAnnotation
协议的类。创建它的实例并将其添加到地图视图中。在委托方法
mapView:viewForAnnotation:
中,创建并返回注释的MKPinAnnotationView
实例。但有一点需要注意。在手势处理程序中添加注释可能不是最好的做法,因为手势处理程序不知道注释视图的选择。为了解决这个问题,您可以使用performSelector:withObject:afterDelay:来安排添加。如果调用了委托方法
mapView:didSelectAnnotationView:
,则取消执行请求。You can make use of a
UITapRecognizer
. In the gesture handler, you can access the coordinate that the user has tapped on using,You can use this coordinate to create an annotation. For that you will have to define a class which conforms to the
MKAnnotation
protocol. Create and add an instance of it to the mapView.In the delegate method
mapView:viewForAnnotation:
, create and return an instance ofMKPinAnnotationView
for the annotation.There is caveat though. Adding the annotation within the gesture handler might not be the best move as gesture handler is unawares to the selection of the annotation view. To deal with this, you can use
performSelector:withObject:afterDelay:
to schedule an addition. If the delegate methodmapView:didSelectAnnotationView:
is called, cancel the perform request.