google 单击时映射多边形,显示多边形内标记的摘要
google maps polygon on click , show summary of markers within the polygon
需要一些有关 google 地图多边形区域的帮助。我在 google 地图上绘制了许多标记。在地图上也绘制了一些多边形区域。每当单击多边形区域时,我想找到多边形覆盖的标记点总数。请在这个方向上指导或提供一些好的链接
谢谢
你可以试试 ray casting algorithm。实现将是这样的:
var markers = []; // list of your markers
var polygonPath = polygon.getPath();
var location;
for (var i = 0; i < markers.length; i++) {
location = markers[i].getPosition();
console.log(isPositionInside(location.lat, location.lng, polygonPath));
}
function isPositionInside(mLat, mLng, polygonPoints) {
var isInside = false;
for (var a = 0, b = polygonPoints.length - 1; a < polygonPoints.length; b = a++) {
var aLng = polygonPoints[a].lng,
aLat = polygonPoints[a].lat,
bLng = polygonPoints[b].lng,
bLat = polygonPoints[b].lat;
if ((aLng > mLng) != (bLng > mLng) && (mLat < (bLat - aLat) * (mLng - aLng) / (bLng - aLng) + aLat)) {
isInside = !isInside;
}
}
return isInside;
};
这不是最佳解决方案,您可以在 wiki article 中阅读,但在大多数情况下,它可以完成工作。
需要一些有关 google 地图多边形区域的帮助。我在 google 地图上绘制了许多标记。在地图上也绘制了一些多边形区域。每当单击多边形区域时,我想找到多边形覆盖的标记点总数。请在这个方向上指导或提供一些好的链接 谢谢
你可以试试 ray casting algorithm。实现将是这样的:
var markers = []; // list of your markers
var polygonPath = polygon.getPath();
var location;
for (var i = 0; i < markers.length; i++) {
location = markers[i].getPosition();
console.log(isPositionInside(location.lat, location.lng, polygonPath));
}
function isPositionInside(mLat, mLng, polygonPoints) {
var isInside = false;
for (var a = 0, b = polygonPoints.length - 1; a < polygonPoints.length; b = a++) {
var aLng = polygonPoints[a].lng,
aLat = polygonPoints[a].lat,
bLng = polygonPoints[b].lng,
bLat = polygonPoints[b].lat;
if ((aLng > mLng) != (bLng > mLng) && (mLat < (bLat - aLat) * (mLng - aLng) / (bLng - aLng) + aLat)) {
isInside = !isInside;
}
}
return isInside;
};
这不是最佳解决方案,您可以在 wiki article 中阅读,但在大多数情况下,它可以完成工作。