php - 如何使用多个坐标在谷歌地图中绘制多边形

标签 php google-maps google-maps-api-3

我有一个数组,其中包含显示在谷歌地图中的不同位置的纬度和经度。现在我需要制作一个通过所有这些点的多边形。我在 google apis 中找到了很好的教程,但该示例仅适用于 3 点。

任何人都可以帮助我或向我推荐任何我可以创建多边形而不在线之间相交的教程。

谢谢。

最佳答案

您可以使用 Graham scan找到坐标点的凸包并将其传递给多边形的方法。

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/

相关文章:

php - MySQL 查询和 php 编辑

php - 使用大数据库在本地安装 MediaWiki : "LocalSettings.php" couldn't be generated

javascript - 在 Facebox 中打开谷歌地图

javascript - Google Maps InfoWindow 为多个标记添加分页

iOS Swift 谷歌地图 - mapView didTapMarker 不工作?

google-maps - Google map API、自定义倾斜度、旋转度等

javascript - Google map 禁止用户在所有事件上平移

php - 注册表设计模式有什么不好的地方吗?

javascript - 如何在不在html上添加脚本标签的情况下使用google-maps-api-v3

php - 通过PHP解析字典对象并创建MySQL表