You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为适配Google Maps API,给多边形坐标数组添加lat和lng字段

问题分析与解决方案:Google Maps Polygon坐标格式转换错误

你离正确答案真的只差一步!核心问题出在对map()方法的理解上——它不会修改原数组,而是返回一个全新的转换后数组,但你没有把这个返回值赋值给path,所以原数组还是保持最初的二维数组格式,自然不符合Google Maps API的要求。

修正后的代码:

let path = [[59.523341487842316, -9.193736158410616], [59.535126839526605, -9.175282560388155], [59.529311101819324, -9.147215925256319], [59.51395167489177, -9.158202253381319], [59.51139973569412, -9.190560422936983], [59.521402457849575, -9.174424253503389], [59.50946015912328, -9.207211576501436]];
// 将map返回的新数组重新赋值给path,覆盖原数组
path = path.map(e => ({lat: e[0], lng: e[1]}));
console.log(path); // 现在输出就是你期望的带lat/lng字段的对象数组了

// 构造多边形
var geoFences = new google.maps.Polygon({
  paths: path,
  strokeColor: '#FF0000',
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: '#FF0000',
  fillOpacity: 0.35
});

关键细节解释:

  • map()是JavaScript中的纯函数,它遍历原数组的每个元素,执行你定义的回调函数(这里是把二维数组转成带lat/lng的对象),最终生成一个新数组返回,但不会改变原数组的内容。你之前的代码只是运行了转换,但没把结果存下来,所以path还是原来的样子。
  • 如果不想修改原数组,也可以新建一个变量来存转换后的结果,比如:
    const formattedPath = path.map(e => ({lat: e[0], lng: e[1]}));
    // 之后在Polygon里用paths: formattedPath
    
    这样原数组还能保留下来做其他用途。

内容的提问来源于stack exchange,提问作者Steve Flynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:37:39