Prüfen Sie, ob ein Punkt im polygon (Karten)

Ich versuche zu prüfen ob ein Punkt im polygon.

Im moment muss ich versuchen mit dieser Funktion

pointInPolygon:function (point,polygon){
    var i;
    var j=polygon.length-1;
    var inPoly=false;
    var lon = point.longitude;
    var lat = point.latitude;
    for (i=0; i<polygon.length; i++)
    {
        if (polygon[i][0]<lon && polygon[j][0]>=lon|| polygon[j][0]<lon && polygon[i][0]>=lon){
            if (polygon[i][0]+(lon-polygon[i][0])/(polygon[j][0]-polygon[i][0])*(polygon[j][1]-polygon[i][1])<lat){
                inPoly=!inPoly;
            }
        }
        j=i;
    }
    return inPoly;
}

... diese Funktion scheint zu funktionieren auf einfachen polygon ( http://jsfiddle.net/zTmr7/3/ ), aber es funktioniert nicht für mich...
hier ist die sample-Daten eines Polygons:

polygon: Array[14]
Array[2]
        0: "-120.190625"
        1: "29.6614549946937"
Array[2]
        0: "-116.87275390625"
        1: "32.6320990313992"
Array[2]
        0: "-116.60908203125"
        1: "34.0363970332393"
Array[2]
        0: "-120.89375"
        1: "41.9203747676428"
Array[2]
        0: "-114.74140625"
        1: "45.784484644005"
Array[2]
        0: "-115.971875"
        1: "48.6489780115889"
Array[2]
        0: "-132.758984375"
        1: "59.9891712248332"
Array[2]
        0: "-162.5099609375"
        1: "68.919753529737"
Array[2]
        0: "-168.6623046875"
        1: "68.9828872543805"
Array[2]
        0: "-168.4865234375"
        1: "64.2551601036027"
Array[2]
        0: "-179.874356794357"
        1: "51.0915874974707"
Array[2]
        0: "-179.999916362762"
        1: "13.1823178795562"
Array[2]
        0: "-143.8771484375"
        1: "19.9962034117847"
Array[2]
        0: "-120.190625"
        1: "29.6614549946937"  

Vielleicht können Sie helfen... vielen Dank im Voraus

PS. Lösung muss sein, vor allem für die Bing maps-oder universal-Lösung...

InformationsquelleAutor T1000 | 2012-01-30
Schreibe einen Kommentar