首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在google地图中使用多个坐标绘制多边形

如何在google地图中使用多个坐标绘制多边形
EN

Stack Overflow用户
提问于 2017-07-12 19:17:56
回答 2查看 5.4K关注 0票数 3

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

有没有人可以帮助我,或者给我推荐一些教程,让我可以创建一个多边形,而不是线之间的相交。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-11-05 12:30:49

可以使用Graham scan方法查找坐标点的凸包,并将这些凸包传递给多边形。

该算法有一个javascript实现:

https://github.com/brian3kb/graham_scan_js

上面的repo还提供了一个如何使用Google Maps实现此功能的示例:

https://github.com/brian3kb/graham_scan_js/blob/master/example/app1.js

下面是上述内容的基本实现:

代码语言:javascript
运行
复制
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
});
票数 3
EN

Stack Overflow用户

发布于 2017-07-12 22:11:23

只需使用您获取的example并添加更多积分即可。

但是,对于超过三个点的情况,如果不正确地对坐标进行排序,将会遇到相交问题。

要解决这个问题,你需要一个算法:

答案是:Sorting points to avoid intersections

你可以停在答案的第二个点,你只需计算多边形的中心,然后计算角度来对点进行排序。

但是,您不能在此算法中使用纬度和经度。

对于这种比例,你可以将你的坐标投影到一个二维平面上。

试试这个:merkator projection

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45056207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档