参考文章:【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; }