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

Turf.js计算方位角距离结果与在线计算器不一致问题咨询

问题解答

这个结果差异既不是Turf的计算逻辑问题,也不是在线方位计算器的计算错误,根源是你传入Turf的坐标顺序不符合规范。

核心规则说明

Turf全系列空间计算方法严格遵循GeoJSON标准坐标约定:

  • 所有坐标点必须按照 [经度, 纬度] 的顺序传入,也就是先传东西向的经度值,再传南北向的纬度值
  • 你代码里传入的p1、p2点写反了经纬度顺序,用了[纬度, 经度]的格式,相当于把点位定位到了错误的位置,自然算出的方位角结果完全不对

问题复现

你当前写的计算代码:

import * as turfBearing from '@turf/bearing'
import * as turfDistance from '@turf/distance'

distance( p1, p2 ) {
  return Math.round( turfDistance.default( p1, p2 ) * 1000 )
}

bearing( p1, p2 ) {
  return ( Math.round( turfBearing.default( p1, p2 ) ) + 360 ) % 360
}

传入的错误格式测试数据:

// 错误:顺序为[纬度, 经度],不符合Turf入参要求
const p1 = [ 48.1039072, 11.6558318 ]
const p2 = [ 48.1035817, 11.6555873 ] 

得到的错误计算结果:

bearing = 233, dist = 45

这里距离数值看起来接近正确值,是因为两点的经纬度差值量级接近,经纬度互换后两点的球面距离巧合偏差不大,但方位角计算完全错位。

修正方法

把两个坐标点的经纬度顺序调换,改成Turf要求的[经度, 纬度]格式即可:

// 正确:顺序为[经度, 纬度]
const p1 = [ 11.6558318, 48.1039072 ]
const p2 = [ 11.6555873, 48.1035817 ]

修正后重新计算得到的结果为:方位角约213度、距离45米,和在线计算器的结果基本一致,仅存在取整、大圆航线计算近似规则带来的微小正常误差。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:24:23