我有一个数组,其中包含显示在谷歌地图中的不同位置的纬度和经度。现在我需要制作一个通过所有这些点的多边形。我在 google apis 中找到了很好的教程,但该示例仅适用于 3 点。
任何人都可以帮助我或向我推荐任何我可以创建多边形而不在线之间相交的教程。
谢谢。
最佳答案
您可以使用 Graham scan找到坐标点的凸包并将其传递给多边形的方法。
算法有javascript实现:
https://github.com/brian3kb/graham_scan_js
上面的 repo 也有一个如何用谷歌地图实现这个的例子:
https://github.com/brian3kb/graham_scan_js/blob/master/example/app1.js
下面是上面的基本实现:
function getConvexHullCoords(coords) {
const convexHull = new ConvexHullGrahamScan();
coords.forEach(item => {
convexHull.addPoint(item.lng, item.lat);
});
return convexHull.getHull().map((item) => {
return {
lat: item.y,
lng: item.x
};
});
}
const coords = [
{lat: 37.772, lng: -122.214},
{lat: 21.291, lng: -157.821},
{lat: -18.142, lng: 178.431},
{lat: -27.467, lng: 153.027}
];
new google.maps.Polygon({
paths: [getConvexHullCoords(coords)],
fillColor: '#000',
fillOpacity: 0.5
});
关于php - 如何使用多个坐标在谷歌地图中绘制多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056207/