我正在使用谷歌地图API。
isLocationOnEdge
var isLocationNear = google.maps.geometry.poly.isLocationOnEdge(latlng, new google.maps.Polyline({
path: google.maps.geometry.encoding.decodePath(result.routes[0].overview_polyline)
}), .00001);
我不明白容忍和知识管理有什么关系
isLocationOnEdge(point:LatLng, poly:Polygon|Polyline, tolerance?:number)
让sat,我想检测一个用户是否在100米以内,任何在地图上绘制的折线。如何解决这个问题。
发布于 2015-02-28 21:59:52
来自这个职位中的一个注释
公差,它是基于小数位的精度所需的纬度和经度。
例如,如果(33.00276,-96.6824)位于折线上,如果公差为0.00001,那么如果将点更改为(33.00278,-96.6824),则该点将不位于折线上。
因此,如果您想要为polyline在大约100米范围内找到一个位置,您可能可以使用0.001作为公差值。
例如,如果您的位置为(1.001,12),则在polyline中的一个点是(1,12),您的位置与折线之间的距离将约为111.319米。(1.001,12)和(1,12)之间的公差为0.001,因此isLocationOnEdge()
将返回true。
如果你的位置是(1.002,12),到(1,12)的距离大约是222.638米。它们之间的公差为0.002,所以如果使用数字0.001作为isLocaitonOnEdge()
的公差值,它将返回false。
您可以从这个JSFiddle:https://jsfiddle.net/j7cco3b0/1/中看到示例代码
发布于 2018-01-30 03:25:15
您还可以创建一个自定义函数,以便以米为单位进行验证,以获得更高的精度。
var isLocationOnEdge=function(location,polyline,toleranceInMeters) {
for(var leg of polyline.getPath().b) {
if(google.maps.geometry.spherical.computeDistanceBetween(location,leg) <= toleranceInMeters){
return true;
}
}
return false;
};
发布于 2019-04-11 11:31:06
我发现的isLocationOnEdge包如下-
com.google.maps.android.PolyUtil.isLocationOnEdge()
对我起作用了。
https://stackoverflow.com/questions/28783685
复制相似问题