我有一张带折线的地图。服务器将在地图上使用LatLng点响应我。我需要检查服务器上的点是否位于折线边缘。如果没有,我需要在折线上找到最近的点,并在折线上最近的点上放置一个标记。例如,如果服务器用点A回应我,我需要将标记放置到点B。
我找到了一个很好的库http://wtp2.appspot.com/cSnapToRouteDemo.html,但这个库适用于Google API版。 2,我正在使用Google API版。 3. Google API版有没有替代方案? 3?感谢的。
答案 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找到它。
答案 1 :(得分:1)
找到一个更简单的解决方案。使用turf.js.Just使用折线坐标创建草皮线和标记位置以创建草皮点。
然后;
...[class.glyphicon-ok] = "bills.status==='paid'" ...
这样您就可以轻松计算折线上的距离和坐标。
您可以从Turf website了解更多信息。