在Swift中绘制自定义折线的GMSMapView

7
我用GMSMapView制作了一个地图视图,并想根据手指触摸绘制折线。但是这个功能让我卡住了,因为我一直没有找到合适的参考资料。

在我的案例中,我想要类似于结果区域应用程序的效果。

enter image description here

谢谢您的帮助。


使用mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D)委托函数确定用户点击的位置,然后计算出点击位置是否在/靠近其中一条路径上。 - ketaki Damale
嗨 @ketakiDamale,谢谢你的回复。但是如果只使用委托,无法在手指移动时触发。 - Fadielse
2个回答

5

这是一个相当大、复杂的问题,因此我将为您概述实现此操作的步骤。如果您需要在某个特定步骤上获得帮助,我建议您发布一个单独的、具体的问题。

我们开始吧:

当点击“绘制模式”按钮时,在地图上方添加一个视图。 确保该视图接收所有的触摸事件,以便用户绘制时地图不会滚动。 子类化该视图并重写touchesBegantouchesMoved方法进行绘制。您可以参考这里的教程。 在视图坐标系中保留多边形所有顶点的数组。 当用户停止绘制时,在touchesEnded方法中将上述点转换为地图坐标。 这篇文章可能会有所帮助。 从位置坐标绘制一个多边形。 这篇文章会有所帮助。 移除在步骤1中添加的视图并关闭绘制模式。
如果您需要对此过程进行澄清,请不要犹豫,随时提问。

嗨@Dopapp,谢谢你的回复。你真是个天才,在我一步一步尝试后,我成功地应用了它。能够解决这个问题真是太好了。再次感谢你的帮助。 - Fadielse

2

嗨@cheesey,感谢您的回复。使用Quartz2D不能应用于GMSMapView,因为我只需要地图上的折线。由于折线形状,我必须确定哪个标记在其中或不在其中。 - Fadielse
@Fadielse 我看到我以前从未使用过那个控制器,所以我不确定问题是什么,但我很高兴你找到了解决方案。 - cheesey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接