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

如何在Node.js项目中调用Mapbox API计算两个坐标点之间的距离

Node.js中使用Mapbox实现两点距离计算的实现方案

Mapbox官方提供的Node.js SDK没有内置直接计算两点距离的getDistance方法,你可以根据自身需求选择以下两种方案实现:


方案1:本地计算球面大圆距离(直线距离)

如果只需要两点的空中直线距离,不需要实际道路通行距离,无需调用Mapbox接口,本地使用半正矢公式直接计算即可,性能更高:

// 封装球面距离计算函数,返回值单位为公里
function getGeoDistance(coordA, coordB) {
    const rad = d => d * Math.PI / 180.0
    const radLatA = rad(coordA.lat)
    const radLatB = rad(coordB.lat)
    const a = radLatA - radLatB
    const b = rad(coordA.long) - rad(coordB.long)
    let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + 
    Math.cos(radLatA) * Math.cos(radLatB) * Math.pow(Math.sin(b/2),2)))
    s = s * 6378.137 // 地球半径,单位为公里,要返回米的话乘以1000即可
    return Math.round(s * 10000) / 10000
}

// 调用示例
const coordA = {lat : 33.968123, long: -118.419454}
const coordB = {lat : 33.997223, long: -117.929145}
const distance = getGeoDistance(coordA, coordB)
console.log(distance)

方案2:调用Mapbox Directions API获取实际路线距离

如果需要驾车、步行、骑行等实际通行场景的距离,调用Mapbox Directions API实现,基于你已完成的SDK初始化,封装方法如下:

// 给初始化的mapbox实例挂载getDistance方法
mapbox.getDistance = async function(coordA, coordB, profile = 'mapbox/driving') {
    // Mapbox接口要求坐标格式为 [经度, 纬度],注意不要传反
    const coords = [
        [coordA.long, coordA.lat],
        [coordB.long, coordB.lat]
    ]
    const response = await this.directions.getDirections({
        profile: profile,
        waypoints: coords,
        geometries: 'geojson'
    })
    // 返回路线的距离,单位为米,可自行转换为其他单位
    return response.routes[0].distance
}

// 调用示例,和你预期的使用方式完全一致
const coordA = {lat : 33.968123, long: -118.419454}
const coordB = {lat : 33.997223, long: -117.929145}
const distance = await mapbox.getDistance(coordA, coordB)
console.log(distance)

注意事项

  • 调用Directions API需要你的Mapbox令牌对应账号开通了相关接口权限,调用量会按照官方规则计费
  • 可通过第三个参数指定出行模式,可选值包括mapbox/driving(默认,驾车)、mapbox/walking(步行)、mapbox/cycling(骑行)、mapbox/driving-traffic(含实时路况的驾车路线)
  • 接口返回的多条路线默认第一条是最优路线,若需要其他路线可自行修改返回逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:15:03