iphone - 如何在 map 中单击按钮时添加用户设计的叠加层

标签 iphone ios overlay gis

我有兴趣在我的 GIS map 应用程序中添加一个选项,能够绘制多边形、圆形、多边形覆盖图,以便用户在其中搜索数据。问题是我已经阅读并测试了如何绘制覆盖,但它们始终是静态的。我希望它是动态的,用户在单击时设置动态中心和点(或半径)。对我来说是个谜。(我是 iPhone 编程的初学者,这是我的第一次应用程序。)而且我没有使用也不想使用 ArcGIS API for iPhone 之类的东西。我将不胜感激任何帮助。

最佳答案

要让用户在 map 上“绘制”任意多边形,一种方法是使用表示多边形角的可拖动注释。在每个注释上提供一个“添加角”按钮和某种删除角按钮。

请参阅我对 User creating a box on MKMapView 的回答了解更多详情。不过,在这个问题上,OP 实际上最终使用了评论中描述的另一种解决方案,如果多边形始终是矩形,这种解决方案会很好地工作。

要在注释 View 中实现按钮(如果你想在注释上使用“删除角”按钮),请参阅我对 How to get click event from a button added over MKAnnotationView 的回答。 .

一旦你在 map 上有了一个多边形或其他叠加层,通过直接触摸拖动它可能只能通过向 map 添加一个手势识别器(关闭它自己的滚动)并使用允许的自定义 MKOverlay 和 MKOverlayView坐标变化。将手势识别器直接添加到 MKOverlayView 似乎不起作用,并且内置覆盖类不允许更改坐标。

通过直接触摸移动的替代方法是在侧面放置一些控件(上/下/左/右/等按钮)以修改自定义叠加层。

Apple 示例应用 Breadcrumb给出了路径的自定义覆盖/ View 的示例。在 WWDC 2010 中,示例应用程序 LocationReminders 给出了一个可以移动和调整大小的圆的自定义覆盖/ View 示例。

最后,当您搜索商家时,您可以使用叠加层的 boundingMapRect(无论叠加层的形状如何,它始终是一个矩形)作为初始搜索的边界框,然后检查找到的每个商家的坐标是否为使用 How to determine if an annotation is inside of MKPolygonView (iOS) 的答案在叠加层的实际形状中.

关于iphone - 如何在 map 中单击按钮时添加用户设计的叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334896/

相关文章:

iOS 基于硬件的加密

ios - '-[UITableViewController setRootController :]: unrecognized selector sent to instance

iphone - 如何以固定时间间隔突出显示表格 View 中的自定义单元格?

ios - 为什么我不能在我的 objective-c 代码中使用我的 swift 文件?

html - CSS 多重叠加导致高度为零

java - 是否可以将 JPanel 覆盖在另一个 JPanel 之上?

android - 叠加对话框 - 对齐 View

objective-c - 在物理设备上测试应用程序时出现链接器错误 - xCode 7

ios - 在实例化单元格之前调用 UICollectionView 委托(delegate)方法?

iphone - 如何将视频上传到YouTube?