首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于知识管理的isLocationOnEdge公差计算

基于知识管理的isLocationOnEdge公差计算
EN

Stack Overflow用户
提问于 2015-02-28 15:56:08
回答 3查看 8K关注 0票数 8

我正在使用谷歌地图API。

isLocationOnEdge

代码语言:javascript
运行
复制
var isLocationNear = google.maps.geometry.poly.isLocationOnEdge(latlng, new google.maps.Polyline({
  path: google.maps.geometry.encoding.decodePath(result.routes[0].overview_polyline)
}), .00001);

我不明白容忍和知识管理有什么关系

代码语言:javascript
运行
复制
isLocationOnEdge(point:LatLng, poly:Polygon|Polyline, tolerance?:number)

让sat,我想检测一个用户是否在100米以内,任何在地图上绘制的折线。如何解决这个问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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/中看到示例代码

票数 16
EN

Stack Overflow用户

发布于 2018-01-30 03:25:15

您还可以创建一个自定义函数,以便以米为单位进行验证,以获得更高的精度。

代码语言:javascript
运行
复制
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;
};
票数 6
EN

Stack Overflow用户

发布于 2019-04-11 11:31:06

我发现的isLocationOnEdge包如下-

代码语言:javascript
运行
复制
com.google.maps.android.PolyUtil.isLocationOnEdge()

对我起作用了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28783685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档