我有一个包含不同位置的纬度和经度数组,这些位置在Google地图上显示。现在我需要创建一个通过所有这些点的多边形。我已经在Google APIs中找到了很好的教程,但是那个示例只适用于3个点。请问是否有人能够帮忙或引荐一个可以创建多边形而不相交的教程?
谢谢。
谢谢。
这里有一个算法的javascript实现:
https://github.com/brian3kb/graham_scan_js
上述仓库还提供了一个如何在Google Maps中实现此算法的示例:
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
});