判斷gps是否在國內

參考文章:【WP7】判斷GPS座標是否在中國html

根據國家行政邊界斷定(光線投射算法)算法

按需求調整了原文中的部分邊界值,測試幾組邊界附近內外座標,結果較爲準確。數組

 

/**
 * 判斷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;
}
相關文章
相關標籤/搜索