Hier wird das modifizierte (mit @Sumit Hinweise) Version von @gusper Antwort, die für mich gearbeitet: (i Donuts hatte)
function isMarkerInsidePolygon(marker, poly) {
var inside = false;
var x = marker.getLatLng().lat, y = marker.getLatLng().lng;
for (var ii=0;ii<poly.getLatLngs().length;ii++){
var polyPoints = poly.getLatLngs()[ii];
for (var i = 0, j = polyPoints.length - 1; i < polyPoints.length; j = i++) {
var xi = polyPoints[i].lat, yi = polyPoints[i].lng;
var xj = polyPoints[j].lat, yj = polyPoints[j].lng;
var intersect = ((yi > y) != (yj > y))
&& (x < (xj - xi) * (y - yi)/(yj - yi) + xi);
if (intersect) inside = !inside;
}
}
return inside;
};
Wenn das Polygon geschlossen dann können Sie jedes Segment (innen/außen) orientieren. Das Zeichnen einer halben Linie von einem beliebigen Punkt bis unendlich ergibt sich aus einer ungeraden oder geraden Anzahl von Segmentüberschneidungen (immer ungerade oder immer gerade für jede Richtung): gerade Anzahl von Überschneidungen sind Punkte außerhalb des Polygons und ungerade sind innen. Sie können also eine beliebige Richtung wählen, z. die X-Achse: Überprüfen Sie, ob sich Segmente in '[pt.x, pt.y] - [inf, pt.y]' schneiden (Sie können auch die halbe Linie an die Begrenzungsbox des Polygons binden). Es gibt natürlich Möglichkeiten, dies effizienter zu tun: https://en.wikipedia.org/wiki/Point_location – BeyelerStudios
Ich frage, ob es eine Methode gibt, mit der ich die Breite und die Länge eines Polygons bestimmen und dann bestimmen kann, ob Punkt ist innerhalb des Polygons oder nicht mit Javascript –
Ich schlage vor, Sie verbessern Ihre Frage mit a) das Problem, das Sie haben und erwartete Lösung Sie wollen, b) eine vollständige Beschreibung, was Sie versucht haben und c) den Code, den Sie bisher – BeyelerStudios