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

如何在Node.js中计算谷歌地图两个点位间的驾车行驶距离

Node.js计算谷歌地图两点驾车行驶距离实现方案

首先明确:node-geometry-library 仅支持计算两点的球面直线(大圆)距离,无法得到实际道路行驶的驾车距离,驾车距离必须调用谷歌地图官方API实现。

方案1:使用谷歌官方Node.js SDK调用Distance Matrix API

前置准备

  • 开通Google Cloud账号,启用Distance Matrix API,获取接口调用密钥

实现步骤

  1. 安装官方依赖包
    npm install @googlemaps/google-maps-services-js
  2. 代码示例
const { Client } = require('@googlemaps/google-maps-services-js');
const client = new Client({});

// 配置参数
const API_KEY = '你的Google Cloud API密钥';
// 点位格式:"纬度,经度",也可以直接传地址字符串
const origin = '39.9042,116.4074'; // 示例:北京坐标
const destination = '31.2304,121.4737'; // 示例:上海坐标

client.distancematrix({
  params: {
    origins: [origin],
    destinations: [destination],
    mode: 'driving', // 行驶模式,可选walking、bicycling、transit
    key: API_KEY
  },
  timeout: 10000 // 超时时间10秒
}).then((response) => {
  const result = response.data.rows[0].elements[0];
  if (result.status === 'OK') {
    console.log('驾车距离:', result.distance.text);
    console.log('预计行驶时间:', result.duration.text);
    // 距离数值(单位米):result.distance.value
    // 时间数值(单位秒):result.duration.value
  } else {
    console.error('查询失败:', result.status);
  }
}).catch((err) => {
  console.error('请求出错:', err);
});

方案2:直接调用HTTP接口(无需官方SDK)

如果不想引入额外SDK,可直接用HTTP请求库调用接口,以axios为例:

  1. 安装依赖
    npm install axios
  2. 代码示例
const axios = require('axios');

const API_KEY = '你的Google Cloud API密钥';
const origin = '39.9042,116.4074';
const destination = '31.2304,121.4737';
const requestUrl = `https://maps.googleapis.com/maps/api/distancematrix/json?origins=${origin}&destinations=${destination}&mode=driving&key=${API_KEY}`;

axios.get(requestUrl).then((response) => {
  if (response.data.status === 'OK') {
    const result = response.data.rows[0].elements[0];
    console.log('驾车距离:', result.distance.text);
    console.log('预计行驶时间:', result.duration.text);
  } else {
    console.error('查询失败:', response.data.status);
  }
}).catch((err) => {
  console.error('请求出错:', err);
});

附加:node-geometry-library计算直线距离实现(非驾车)

如果你只需要两点的直线距离,可按以下方式使用该库:

  1. 安装依赖
    npm install node-geometry-library
  2. 代码示例
const geometry = require('node-geometry-library');

// 点位1坐标:纬度、经度
const point1 = { lat: 39.9042, lng: 116.4074 };
// 点位2坐标:纬度、经度
const point2 = { lat: 31.2304, lng: 121.4737 };

// 计算距离,单位为米
const distance = geometry.spherical.computeDistanceBetween(
  new geometry.LatLng(point1.lat, point1.lng),
  new geometry.LatLng(point2.lat, point2.lng)
);
console.log('两点直线距离:', (distance / 1000).toFixed(2) + '公里');

注意事项

  • API密钥需妥善保管,避免泄露产生额外费用
  • 接口有调用配额限制,可在Google Cloud控制台查看用量和调整配额
  • 若需计算多个点位的距离,可在origins、destinations参数中传入多个值,用竖线|分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:36:08