如何在地图中按钮单击时添加用户设计的叠加层

时间:2011-09-07 13:44:18

标签: iphone ios overlay gis

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

1 个答案:

答案 0 :(得分:1)

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

有关详细信息,请参阅我对User creating a box on MKMapView的回答。然而,在这个问题上,OP实际上最终使用了评论中描述的另一种解决方案,如果多边形总是矩形的话,这种解决方案会很好。

要在注释视图中实现按钮(如果要在注释上添加“删除角落”按钮),请参阅我对How to get click event from a button added over MKAnnotationView的回答。

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

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

Apple示例应用Breadcrumb提供了路径的自定义叠加/视图示例。在WWDC 2010中,示例应用程序LocationReminders为可以移动和调整大小的圆圈提供了自定义叠加/视图的示例。

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