MKMapKit PushPin 点击即可

发布于 2024-11-14 09:42:28 字数 59 浏览 2 评论 0原文

我需要在用户点击 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挖个坑埋了你 2024-11-21 09:42:28

您可以使用UITapRecognizer。在手势处理程序中,您可以访问用户点击的坐标,

CGPoint touchLocation = [gesture locationInView:mapView];
CLLocationCoordinate2D coordinate = [mapView convertPoint:touchLocation toCoordinateFromView:mapView];

您可以使用该坐标来创建注释。为此,您必须定义一个符合 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,

CGPoint touchLocation = [gesture locationInView:mapView];
CLLocationCoordinate2D coordinate = [mapView convertPoint:touchLocation toCoordinateFromView:mapView];

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 of MKPinAnnotationView 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 method mapView:didSelectAnnotationView: is called, cancel the perform request.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文