isLocationOnEdge 以公里为单位的公差计算
isLocationOnEdge tolerance calculation in terms of km
我正在使用google地图地图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)
让我坐下来,我想检测用户是否在地图上绘制的任何多段线的 100 米范围内。如何解决这个问题。
来自this post中的评论之一:
公差,是根据经纬度要求的小数位精度。
例如,如果说 (33.00276, -96.6824) 在折线上,如果公差为 0.00001,那么如果您将点更改为 (33.00278, -96.6824),则该点将不会在折线.
所以,如果你想在 100m 左右的范围内找到检测折线的位置,你可以使用 0.001 作为公差值。
例如,如果您的位置是 (1.001, 12),折线中的一个点是 (1, 12),则您的位置与折线之间的距离约为 111.319 米。 (1.001, 12) 和 (1, 12) 之间的公差为 0.001,因此 isLocationOnEdge()
将 return 为真。
如果您的位置是 (1.002, 12),到 (1, 12) 的距离约为 222.638 米。它们之间的公差为 0.002,因此如果您使用数字 0.001 作为 isLocaitonOnEdge()
的公差值,它将 return false。
您可以从这个 JSFiddle 查看示例代码:https://jsfiddle.net/j7cco3b0/1/
您还可以创建自定义函数以米为单位进行验证以获得更好的精度。
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;
};
我找到的 isLocationOnEdge 包如下 -
com.google.maps.android.PolyUtil.isLocationOnEdge()
对我有用。
我正在使用google地图地图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)
让我坐下来,我想检测用户是否在地图上绘制的任何多段线的 100 米范围内。如何解决这个问题。
来自this post中的评论之一:
公差,是根据经纬度要求的小数位精度。
例如,如果说 (33.00276, -96.6824) 在折线上,如果公差为 0.00001,那么如果您将点更改为 (33.00278, -96.6824),则该点将不会在折线.
所以,如果你想在 100m 左右的范围内找到检测折线的位置,你可以使用 0.001 作为公差值。
例如,如果您的位置是 (1.001, 12),折线中的一个点是 (1, 12),则您的位置与折线之间的距离约为 111.319 米。 (1.001, 12) 和 (1, 12) 之间的公差为 0.001,因此 isLocationOnEdge()
将 return 为真。
如果您的位置是 (1.002, 12),到 (1, 12) 的距离约为 222.638 米。它们之间的公差为 0.002,因此如果您使用数字 0.001 作为 isLocaitonOnEdge()
的公差值,它将 return false。
您可以从这个 JSFiddle 查看示例代码:https://jsfiddle.net/j7cco3b0/1/
您还可以创建自定义函数以米为单位进行验证以获得更好的精度。
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;
};
我找到的 isLocationOnEdge 包如下 -
com.google.maps.android.PolyUtil.isLocationOnEdge()
对我有用。