如何使用 Google Maps API 显示多边形?

Posted

技术标签:

【中文标题】如何使用 Google Maps API 显示多边形?【英文标题】:How to display polygon with Google Maps API? 【发布时间】:2021-10-13 00:26:21 【问题描述】:

我的问题:

我正在尝试使用 Google Maps API 使用爱尔兰县边界的 geoJSON 创建一个数据层多边形。数据来自 Ordance Survey Ireland,所以我很确定我看到的问题出在我的代码中。

基本上,代码循环通过geoJSON文件添加经度和纬度点并在它们之间画一条线。当一个县完成后,它会将完整的轮廓添加到地图上并移动到下一个县。正如您所见,地图上某些点的轮廓会跳跃,但有些则完美地沿着县的边界绘制。

我已尝试直接从源 URL 加载 geoJSON,如 API 文档中所述,并且还在我的代码中使用循环,但无济于事。任何帮助将不胜感激。

这是我正在使用的 geoJSON 的链接:Counties GEOJSON

<script>
    let map;

    function initMap() 
        const map = new google.maps.Map(document.getElementById("map"), 
            zoom: 7,
            center: 
                lat: 53.411080,
                lng: -7.710753
            ,
            mapTypeId: "roadmap",
        );

        let counties = httpGet('https://jameswalshe.ie/countiesGEOJSON.geojson');
        counties = JSON.parse(counties);

        for (let s = 0; s < counties['features'].length; s++) 

            var countiesCoords = [];
            var countyName = "county" + s;

            for (let i = 0; i < counties['features'][s]['geometry']['coordinates'].length; i++) 

                for (let y = 0; y < counties['features'][s]['geometry']['coordinates'][i].length; y++) 

                    for (let z = 0; z < counties['features'][s]['geometry']['coordinates'][i][y].length; z++) 

                        countiesCoords.push(
                            lat: counties['features'][s]['geometry']['coordinates'][i][y][z][1],
                            lng: counties['features'][s]['geometry']['coordinates'][i][y][z][0]
                        );

                    

                

            

            countyName = new google.maps.Polygon(
                paths: countiesCoords,
                strokeColor: "rgb(0, 139, 63)",
                strokeOpacity: 1,
                strokeWeight: 2,
                fillColor: "#FF0000",
                fillOpacity: 0,
            );
            countyName.setMap(map);

        

    ;
</script>

【问题讨论】:

你的 javascript 控制台说什么? httpGet 是什么?您需要提供允许重现问题的minimal reproducible example,以及调试详细信息。 您的评论“当一个县完成后,它会将完整的轮廓添加到地图中并移动到下一个县。”与代码不匹配 - “县”循环是 z 循环所以我希望在那个循环之后添加多边形。就目前而言,一个县的末端与下一个县“相连”,这导致了一些不稳定的线路。 【参考方案1】:

我使用了 map.data.loadGeoJson('data.json');方法而不是从另一个域加载。

【讨论】:

以上是关于如何使用 Google Maps API 显示多边形?的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Maps API v3 中缩放到 geojson 多边形边界

google maps API v3 - 如何绘制动态多边形/折线?

如何在google maps api中为省或某个城市提供一些颜色?

Google Maps JS API 多边形渲染问题

如何更改 React-Google-Maps 多边形的样式选项 onHover?

在Android中使用Google Maps API检查点是不是在多边形中