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

如何在react-google-maps/api的Polygon组件中动态处理多路径数组

解决react-google-maps/api动态添加Polygon内孔的问题

直接通过扩展运算符动态拼接外轮廓和内孔数组即可,不需要用flat()或者额外映射,具体修改如下:

你的原代码中paths是固定写死了两个内孔:

paths={[outerCoords, innerCoords[0], innerCoords[1]]}

改成用扩展运算符展开innerCoords数组,就能自动适配任意长度的内孔:

return polyline.location.map((outerCoords, polyInd) => {
  // ...其他逻辑
  return (
    <Polygon 
      key={`polyline-${i}-${polyInd}`} 
      paths={[outerCoords, ...innerCoords]} 
      // ...其他属性
    />
  );
});

原理说明

react-google-maps/api的Polygon组件的paths参数规则和原生Google Maps API一致:

  • 数组第一个元素是多边形的外轮廓坐标集合
  • 数组后续的每个元素都是一个独立的内孔坐标集合

用[outerCoords, ...innerCoords]的方式,会把innerCoords里的每一个内孔数组依次追加到外轮廓后面,不管innerCoords长度是多少,都能正确渲染所有内孔。

之前用flat()无效,大概率是因为innerCoords本身就是一维数组(每个元素都是内孔坐标数组),flat()不会改变结构,反而可能破坏了paths需要的层级结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:25:55