判断gps是否在国内

时间:2023-03-08 22:00:22

参考文章:【WP7】判断GPS坐标是否在中国

根据国家行政边界判定(光线投射算法)

按需求调整了原文中的部分边界值,测试几组边界附近内外坐标,结果较为准确。

/**
* 判断GPS坐标是否在多边形中
* @param array list 国家行政边界数组,[维度,经度] 的形式,取0,1键值
* @param float lat 维度
* @param float lng 经度
* @return bool
*/
var IsInsidePolygon = function(list, lat, lng){
var inside = false;
var prePoint = list[0];
for(var i = 1; i < list.length; i++) {
var nextPoint = list[i];
if(lng > Math.min(prePoint[1], nextPoint[1]) && lng <= Math.max(prePoint[1], nextPoint[1]) && lat <= Math.max(prePoint[0], nextPoint[0]) && prePoint[1] != nextPoint[1]) {
xinters = (lng - prePoint[1]) * (nextPoint[0] - prePoint[0]) / (nextPoint[1] - prePoint[1]) + prePoint[0];
if(prePoint[0] == nextPoint[0] || lat <= xinters)
inside ^= true;
}
prePoint = nextPoint;
}
return inside;
}