迭代问题“未捕获的错误:需要坐标”

问题描述

我正在使用mapBox和turf.js允许用户在地图上绘制多边形,然后得到周长距离。我能够使其执行所需的功能,并且正在接收/显示正确的测量值,但是现在出现“未捕获的错误:需要坐标”。我认为这是我试图创建一个变量以遍历坐标(var to和var from)的地方,但是我还没有找到解决该问题的解决方案。

function measurements(e) {
  var data = draw.getAll();
  var answer = document.getElementById('calculated-perimeter');
  if (data.features.length > 0) {
    var coordinates = data.features[0].geometry.coordinates[0];
    var calc_distances = []
    var i;
    for (i = 0; i<coordinates.length; i++){
      var from = turf.point(coordinates[i]);
      var to = turf.point(coordinates[i+1]);
      var options = {units: 'kilometers'};
      var distance = turf.distance(from,to,options);
      calc_distances.push(distance);
      console.log(calc_distances);
      var perimeter = calc_distances.reduce((a,b) => a + b,0);
      var strg_per = perimeter.toString();
      var strg_per = Math.round(strg_per * 1000)
      answer.innerHTML ='<p><strong>' + strg_per + '</strong></p><p>meters</p>';} 
  } else {
    answer.innerHTML = '';
    if (e.type !== 'draw.delete')
    alert('Use the draw tools to draw a polygon!');
  }
}

-------------------------------

EDIT : here is the full stack trace:

turf.min.js:1 Uncaught Error: coordinates is required
    at Object.r [as point] (turf.min.js:1)
    at r.measurements ((index):173)
    at r.zt.fire (evented.js:119)
    at r.i.fire (setup.js:52)
    at q.Jt.onStop (draw_polygon.js:81)
    at Object.stop (object_to_mode.js:57)
    at Object.stop (mode_handler.js:57)
    at Object.c [as changeMode] (events.js:169)
    at q.changeMode (mode_interface_accessors.js:151)
    at q.Jt.onKeyUp (draw_polygon.js:66)

解决方法

这两行的组合看起来是错误的:

turf.point(undefined)

您将打给for (i = 0; i<coordinates.length - 1; i++){

第一行可能应该是:

dropdown-divider