1. 程式人生 > >LBS——地理圍欄(JS)

LBS——地理圍欄(JS)

/*
 圍欄計算
 */
var GPS_EleFence = {
    IsPtInPoly: function (ALon, ALat, APoints) {
        var iSum = 0,
            iCount;
        var dLon1, dLon2, dLat1, dLat2, dLon;
        if (APoints.length < 3) return false;
        iCount = APoints.length;
        for (var i = 0; i < iCount; i++) {
if (i == iCount) { dLon1 = APoints[i].lng; dLat1 = APoints[i].lat; dLon2 = APoints[0].lng; dLat2 = APoints[0].lat; } else { dLon1 = APoints[i].lng; dLat1 = APoints[i].lat; dLon2 =
APoints[i + 1].lng; dLat2 = APoints[i + 1].lat; } //以下語句判斷A點是否在邊的兩端點的水平平行線之間,在則可能有交點,開始判斷交點是否在左射線上 if (((ALat >= dLat1) && (ALat < dLat2)) || ((ALat >= dLat2) && (ALat < dLat1))) { if (Math.abs(dLat1 - dLat2)
> 0) { //得到 A點向左射線與邊的交點的x座標: dLon = dLon1 - ((dLon1 - dLon2) * (dLat1 - ALat)) / (dLat1 - dLat2); if (dLon < ALon) iSum++; } } } if (iSum % 2 != 0) return true; return false; } };