传单将多边形添加到图层

时间:2020-06-12 11:57:36

标签: javascript leaflet

我正在尝试基于路径生成某种“河”多边形:

  • 我有一条由点组成的路径,到河的一侧。
  • 基于该路径,我遍历其点,将其稍微移动一点(按比例向坐标中添加一个随机数)
  • 我将它们存储在另一个点数组中,但它们却是倒向的(path [0]应该是pathinverted [paht.size.length-1])
  • 我将两个数组连接在一起,以便它们可以形成适当的多边形

此部分正在工作,路径已正确生成。但是,当我尝试将它们添加到图层时,它会中断。 这是我的代码:

watch-files

当我尝试激活图层时,出现“未捕获的TypeError:无法读取未定义的属性'0'”,但没有任何其他信息。 我在做什么错了?

1 个答案:

答案 0 :(得分:2)

正如GrzegorzT。指出的那样,问题出在第一部分:

for (let j = 0; j<paths.length; j++) {
  p = paths[j];
  // Iterate over every point of the path
  for (let i = p.length - 1; i >= 0; i--) {
    // Save the new coordinates in the mirror array
    pathinverted[j] = new Array(); // <= you recreate the array in your inner loop
  }
}

由于您在内部循环中重新创建了镜像数组,因此要擦除以前的坐标对。

您应该只在外循环中初始化镜像数组:

for (let j = 0; j<paths.length; j++) {
  p = paths[j];
  pathinverted[j] = new Array();
  // Iterate over every point of the path
  for (let i = p.length - 1; i >= 0; i--) {
    // Save the new coordinates in the mirror array
    pathinverted[j][p.length - 1 - i] = [0,0]; // etc.
  }
}