Google map API v.3在折线上找到从一个点到另一个点的最近点

时间:2016-03-02 11:42:40

标签: javascript google-maps google-maps-api-3

我有一张带折线的地图。服务器将在地图上使用LatLng点响应我。我需要检查服务器上的点是否位于折线边缘。如果没有,我需要在折线上找到最近的点,并在折线上最近的点上放置一个标记。例如,如果服务器用点A回应我,我需要将标记放置到点B。

enter image description here

我找到了一个很好的库http://wtp2.appspot.com/cSnapToRouteDemo.html,但这个库适用于Google API版。 2,我正在使用Google API版。 3. Google API版有没有替代方案? 3?感谢的。

2 个答案:

答案 0 :(得分:1)

Google Maps Javascript API有一个Geometry library

Geometry库具有MC功能。请参阅documentation

  

要确定某个点是落在折线上还是附近,或者在多边形的边缘上或附近,请将点,折线/多边形以及可选的公差值(以度为单位)传递给MC。如果点与线或边缘上最近点之间的距离落在指定的公差范围内,则该函数返回true。默认容差值为10 -9 度。

您必须以这种方式包含库:

isLocationOnEdge

如果您需要多个库,例如:

google.maps.geometry.poly.isLocationOnEdge()

完整文档为here

如果您需要在折线上找到该点,您可以使用此移植到您在问题中提到的库的v3版本:

<script type="text/javascript"
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry">
</script>

对Bill Chadwick 2007和Lawrence Ross 2014的v3版本的致谢。和@geocodezip找到它。

JSFiddle demo

答案 1 :(得分:1)

找到一个更简单的解决方案。使用turf.js.Just使用折线坐标创建草皮线和标记位置以创建草皮点。

然后;

...[class.glyphicon-ok] = "bills.status==='paid'" ...

这样您就可以轻松计算折线上的距离和坐标。

您可以从Turf website了解更多信息。