Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “迭代问题”;未捕获错误:需要坐标“;_Javascript_Mapbox_Mapbox Gl Js_Turfjs - Fatal编程技术网

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

Javascript “迭代问题”;未捕获错误:需要坐标“;,javascript,mapbox,mapbox-gl-js,turfjs,Javascript,Mapbox,Mapbox Gl Js,Turfjs,我使用mapbox和thrup.js允许用户在地图上绘制一个多边形,然后反过来获得周长距离。我能够让它执行我想要的功能,并且我正在接收/显示正确的测量值,但现在我得到了“未捕获错误:需要坐标”。我想这就是我试图创建一个变量来遍历坐标(var-to和var-from)的地方,但我还没有找到解决方案来修复它 function measurements(e) { var data = draw.getAll(); var answer = document.getElementById('ca

我使用mapbox和thrup.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)
功能测量(e){
var data=draw.getAll();
var-answer=document.getElementById('computed-permiture');
如果(data.features.length>0){
变量坐标=数据。特征[0]。几何体。坐标[0];
变量计算距离=[]
var i;
对于(i=0;i a+b,0);
var strg_per=周长.toString();
var strg_per=数学四舍五入(strg_per*1000)
answer.innerHTML=''+strg_per+'

';} }否则{ answer.innerHTML=''; 如果(e.type!=='draw.delete') 警报('使用绘制工具绘制多边形!'); } } ------------------------------- 编辑:以下是完整的堆栈跟踪: turp.min.js:1未捕获错误:需要坐标 在Object.r[作为点](turp.min.js:1) r.测量值((指数):173) 在r.zt.fire(事件js:119) 在r.i.fire(setup.js:52) 在q.Jt.onStop(绘制多边形js:81) 在Object.stop(Object_到_mode.js:57) at Object.stop(mode_handler.js:57) 在Object.c[as changeMode](events.js:169) 在q.changeMode(mode\u interface\u accessors.js:151) 在q.Jt.onKeyUp(绘制多边形js:66)
这两行的组合看起来是错误的:

for (i = 0; i<coordinates.length; i++){

...


var to = turf.point(coordinates[i+1]);`

请粘贴完整的堆栈跟踪。@Konowy我在上面编辑并添加了它
for (i = 0; i<coordinates.length - 1; i++){