谷歌地图API v3-捕捉多段线边缘

Google Maps API v3 - Snap to polyline edges

本文关键字:段线 边缘 API v3- 谷歌地图      更新时间:2023-09-26

有人知道如何将标记或多段线捕捉到现有多段线的坐标中吗?

我正在寻找类似谷歌地图引擎lite中的行为:https://mapsengine.google.com

如果您在那里选择一条多段线或标记,并尝试编辑另一个多段线坐标(使用ctrl或shift),它将捕捉到标记或多段线的坐标

据我所知,没有简单的方法可以做到这一点。多段线只有最初传递给它们的位置(latLng对象),仅此而已。

因此,考虑到这一点,您可以采取两种方法:

  1. 可以绘制多边形而不是多段线
  2. 更改多段线以包含更多点

多边形

使用这种方法,您必须绘制一个非常细的多边形,细到看起来像一条线。

使用这种方法,您可以通过使用containsLocation()方法轻松检查标记是否在多边形内,如果不在,则将其新位置设置为在多边形内。

缺点是多边形需要非常非常细,并且需要设置线的宽度。如果宽度太大,拖动看起来会不准确,如果宽度太小,你可能会错过它。

多段线

使用这种方法,您必须向多段线添加多个点,然后每次标记熄灭时都将其移动到其中一个点。

这样就不需要创建宽度来计算直线,但需要自动计算数十个(如果不是数百个)额外点,然后将它们添加到多段线中。

这两种解决方案都可行,而且都有利弊。最后,它几乎围绕着你更喜欢哪种毒药这句老话。

额外

撇开理论不谈,我确实为多段线策略找到了一个很好的例子(对@geocodezip的评论和@BradBarrow的回应表示赞扬)。