Dưới đây là sửa đổi (với gợi ý @Sumit) phiên bản của @gusper câu trả lời mà làm việc cho tôi: (i có bánh rán)
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;
};
Nếu đa giác là đóng sau đó bạn có thể định hướng mọi phân đoạn (bên trong/bên ngoài). Vẽ một nửa dòng từ bất kỳ điểm nào đến vô cùng sẽ kết thúc bằng số lẻ hoặc thậm chí số đoạn giao nhau (luôn lẻ hoặc luôn luôn cho mọi hướng): thậm chí số giao điểm là điểm bên ngoài đa giác và lẻ nằm bên trong. Do đó, bạn có thể chọn bất kỳ hướng nào, ví dụ: trục x: kiểm tra các đoạn giao nhau trên '[pt.x, pt.y] - [inf, pt.y]' (bạn cũng có thể liên kết nửa dòng với hộp giới hạn của đa giác). Có tất nhiên cách để làm điều này hiệu quả hơn: https://en.wikipedia.org/wiki/Point_location – BeyelerStudios
Tôi hỏi nếu có một phương pháp cho phép tôi xác định vĩ độ và kinh độ của một đa giác, và sau đó xác định xem điểm là bên trong đa giác hoặc không sử dụng javascript –
Tôi đề nghị bạn nâng cao câu hỏi của mình với a) vấn đề bạn có và giải pháp mong muốn, b) mô tả đầy đủ về những gì bạn đã thử và c) mã bạn có cho đến nay – BeyelerStudios