Vérifier si le Point à l'Intérieur d'Un Polygone

Je veux vérifier si un point est situé à l'intérieur d'un polygone. Le polygone est:

 polygon=   [ [-73.89632720118, 40.8515320489962],
              [-73.8964878416508, 40.8512476593594],
              [-73.8968799791431, 40.851375925454],
              [-73.8967188588015, 40.851660158514],
              [-73.89632720118, 40.8515320489962] ]

Les points que je tiens à vérifier sont les suivants:

1 = [40.8515320489962,-73.89632720118]
2 = [40.8512476593594,-73.8964878416508]
3 = [40.851375925454,-73.8968799791431]
4 = [40.851660158514,-73.8967188588015]
5 = [40.8515320489962,-73.89632720118]

Comment puis-je savoir si chacun de ces points est à l'intérieur de ce polygone?

Cet algorithme ne fonctionne pas. Je ne sais pas pourquoi.

pt[lat,long]

function isPointInPoly(poly, pt){
    for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
        ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1] < poly[i].y))
        && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])
        && (c = !c);
    return c;
}

Je ne veux pas utiliser une solution tierce partie tels que google maps API ou cette un https://github.com/mattwilliamson/Google-Maps-Point-in-Polygon.

Ma tentative est ici:
http://jsfiddle.net/nvNNF/2/

  • Prendre un point à l'extérieur du polygone vérifier et voir si une ligne à partir de ce point, à votre point croise un nombre impair de lignes qui définissent le périmètre du polygone.
  • Vous pouvez vérifier le code en direct ici: j'ai mis un point dans le polygone jsfiddle.net/nvNNF/2 et il retourne "False"
  • en.wikipedia.org/wiki/Point_in_polygon attention en.wikipedia.org/wiki/Complex_polygons
  • poly[i].y devrait être poly[i][1] à la fin de la ligne 3. Également que la fonction vérifie si le point est à l'intérieur du polygone pas si le point appartient au polygone.
  • Aucune raison pour que votre boucle d'avoir un grand nombre de variables, la réduction de la lisibilité. Vous pouvez tester chaque état individuellement et alerte, et une fois que vous atteignez la fin de votre code, puis vous combinez toutes vos conditions et vérifier de nouveau.
InformationsquelleAutor user3378649 | 2014-03-20