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

Turf.js lineArc函数角度参数异常引发坐标数组报错问题

Turf.js lineArc函数部分案例异常排查

以下代码中,R167B、D630C、R192B三个案例调用turf.lineArc正常,但R192A和R168A出现异常:

//R167B ok
var centerw = turf.point([115.959444, -31.945]);
var startAnglew = 233;
var endAnglew = 253;
var radiusw =35.965;
var arc = turf.lineArc(centerw, radiusw * 1.852, startAnglew, endAnglew, options);

//D630C ok
var centerx = turf.point([152.711944, -27640556]);
var startAnglex = 287;
var endAnglex = 331;
var radiusx = 35.057;
var arc = turf.lineArc(centerx, radiusx * 1.852, startAnglex, endAnglex, options);

//R192B ok
var centery = turf.point([115.959444, -31.945]);
var startAngley = 253; 
var endAngley = 278;
var radiusy =69.83195;
var arc = turf.lineArc(centery, radiusy * 1.852, startAngley, endAngley, options);

//R192A not ok
var centery = turf.point([115.959444, -31.945]);
var startAngley = 253;
var endAngley = 277; //change this to 276 or 278 and works fine?!?
var radiusy =119.7195;          
var arc = turf.lineArc(centery, radiusy * 1.852, startAngley, endAngley, options);

//R168A not ok
var centerx = turf.point([115.959444, -31.945]);
var startAnglex = 303;
var endAnglex = 327;
var radiusx = 60.0439;
var arc = turf.lineArc(centerx, radiusx * 1.852, startAnglex, endAnglex, options);

报错信息如下:

turf.min.js:1  Uncaught Error: coordinates must be an array of two or more positions
    at h (turf.min.js:1:2371)
    at Object.bi [as lineArc] (turf.min.js:43:85958)
    at getOrderedPolyLines (?dataset=7a95f134-be37-49e6-9aca-0b0780f30258:223009:18)
    at drawVolume (?dataset=7a95f134-be37-49e6-9aca-0b0780f30258:222669:22)
    at HTMLDivElement.<anonymous> (?dataset=7a95f134-be37-49e6-9aca-0b0780f30258:222549:8)
    at HTMLDivElement.dispatch (jquery.min.js:2:43331)
    at y.handle (jquery.min.js:2:41315)
    at Object.trigger (jquery.min.js:2:71937)
    at E.fn.init.triggerHandler (jquery.min.js:2:72616)
    at Object.checkboxChange (gijgo.min.js:1:121495)

解决思路

  • 拆分角度区间:针对R192A这类仅特定角度触发的异常,可将角度区间拆分为两段(比如253-276和276-277),分别调用lineArc生成弧线后,用turf.lineMerge合并为一条线
  • 微调临界角度:给异常的起止角度添加极小偏移(如±0.001),避开触发bug的临界值
  • 升级Turf.js版本:当前使用的压缩版可能存在已知bug,尝试切换到最新稳定版,或使用未压缩版本定位具体计算错误
  • 校验参数合法性:确认所有坐标、半径单位的一致性,D630C的纬度值-27640556明显超出合法范围(纬度应为-90到90),虽案例正常,但可能干扰内部计算逻辑
  • 手动构建弧线:若上述方法无效,可通过几何公式手动计算弧线的坐标点数组,再用turf.lineString构建线要素,绕过lineArc的内部问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:14:56