GeoJSON JS判断某一点是否在某一区域范围之内

简介: GeoJSON JS判断某一点是否在某一区域范围之内 算法: function isInPolygon(checkPoint, polygonPoints) { var counter = 0; var i; var xinters; var p1, p2; var pointCount = polygonPoints.

GeoJSON JS判断某一点是否在某一区域范围之内

算法:

function isInPolygon(checkPoint, polygonPoints) {
    var counter = 0;
    var i;
    var xinters;
    var p1, p2;
    var pointCount = polygonPoints.length;
    p1 = polygonPoints[0];

    for (i = 1; i <= pointCount; i++) {
        p2 = polygonPoints[i % pointCount];
        if (
            checkPoint[0] > Math.min(p1[0], p2[0]) &&
            checkPoint[0] <= Math.max(p1[0], p2[0])
        ) {
            if (checkPoint[1] <= Math.max(p1[1], p2[1])) {
                if (p1[0] != p2[0]) {
                    xinters =
                        (checkPoint[0] - p1[0]) *
                            (p2[1] - p1[1]) /
                            (p2[0] - p1[0]) +
                        p1[1];
                    if (p1[1] == p2[1] || checkPoint[1] <= xinters) {
                        counter++;
                    }
                }
            }
        }
        p1 = p2;
    }
    if (counter % 2 == 0) {
        return false;
    } else {
        return true;
    }
}

测试:

1.先选取一个范围:http://geojson.io/#map=15/31.1422/121.6617

2. 选取一点再这个范围内进行测试:

3.在浏览器控制台加载方法和调用,验证这一点是否在范围内

博客内容仅代表个人观点,如发现阐述有误,麻烦指正,谢谢!
目录
相关文章
|
JavaScript
盘点JS判断空对象的几大方法
在盘点JS判空方法之前我们先来了解下面的三个方法。
196 2
盘点JS判断空对象的几大方法
|
JavaScript 前端开发
JavaScript判断各种资源是否加载完成的方法汇总,资源预加载问题
JavaScript判断各种资源是否加载完成的方法汇总,资源预加载问题
989 0
|
算法 JavaScript 前端开发
判断链表中是否又环使用JavaScript解决算法问题
判断链表中是否又环使用JavaScript解决算法问题
150 0
判断链表中是否又环使用JavaScript解决算法问题
|
JavaScript 索引 Python
JS 刷 Leetcode:303. 区域和检索 - 数组不可变
JS 刷 Leetcode:303. 区域和检索 - 数组不可变
JS 刷 Leetcode:303. 区域和检索 - 数组不可变
|
JavaScript
js条件逻辑判断-德摩根定律
在实际应用中经常会遇到js的大量逻辑判断,各种复杂的逻辑判断
136 0
js条件逻辑判断-德摩根定律
|
前端开发 JavaScript
【前端】【JavaScript】通过成绩判断等级
【前端】【JavaScript】通过成绩判断等级
157 0
【前端】【JavaScript】通过成绩判断等级
|
JavaScript
JS进阶-数据类型的判断方式以及转换方式的汇总
本文内容: 介绍了几种常用的数据类型判断方式,并且手写了一个通用的判断方法 强制类型转换和隐式类型转换的常用方法和规则,以及常见的面试题
122 0
|
JavaScript iOS开发
JS判断IOS系统版本
JS判断IOS系统版本
392 0
|
存储 JavaScript 前端开发
手撕前端面试题【javascript~文件扩展名、分隔符、单向绑定、判断版本、深浅拷贝、内存泄露等】
手撕前端面试题【javascript~文件扩展名、分隔符、单向绑定、判断版本、深浅拷贝、内存泄露等】
248 0
手撕前端面试题【javascript~文件扩展名、分隔符、单向绑定、判断版本、深浅拷贝、内存泄露等】