Files
test-map-distance/public/docs.md
2026-01-09 22:56:09 +08:00

2.7 KiB
Raw Blame History

地图两点距离计算工具

简介

使用高德地图 API输入起点地址和终点地址自动计算两者之间的直线距离。

快速开始

1. 安装 Deno

# Linux/macOS (WSL)
curl -fsSL https://deno.land/install.sh | sh

# macOS
brew install deno

2. 配置高德 API Key

申请步骤:

  1. 访问 高德开放平台
  2. 注册/登录账号
  3. 点击「控制台」→「应用管理」→「创建新应用」
  4. 填写应用名称,点击「添加 Key」
  5. 勾选 Web 服务 权限
  6. 复制生成的 Key

配置环境变量:

在项目根目录创建 .env 文件:

AMAP_KEY=你的高德APIKey

3. 运行程序

deno run -A https://kevisual.xiongxiao.me/root/test-map-distance/index.ts

4. 查看结果

程序运行完成后,会在当前目录生成 distance-results.json 文件:

[
  {
    "from": "起点地址",
    "to": "终点地址",
    "distanceMeters": 1120000,
    "distanceKm": "1120.00"
  }
]

本地开发

代码路径:https://git.xiongxiao.me/test/test-map-distance

访问此路径源码

目录结构

test-map-distance/
├── .env              # 环境变量API Key
├── address.json      # 地址列表配置
├── distance-results.json  # 计算结果(自动生成)
├── plan/
│   └── v0.0.1.md     # 设计文档
└── public/
    └── docs.md       # 使用说明

address.json 格式

[
  { "from": "北京市", "to": "上海市" },
  { "from": "广州市", "to": "深圳市" }
]

实现原理

  1. 地理编码:使用高德地图 地理编码 API 将地址转换为经纬度坐标
  2. 距离计算:使用 Haversine 公式计算两点间的直线距离
// Haversine 公式
const R = 6371000; // 地球半径(米)
const dLat = (to.lat - from.lat) * Math.PI / 180;
const dLng = (to.lng - from.lng) * Math.PI / 180;
const a = Math.sin(dLat/2)² + Math.cos(from.lat) * Math.cos(to.lat) * Math.sin(dLng/2)²;
const distance = R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));

常见问题

错误 原因 解决方案
USERKEY_PLAT_NOMATCH API Key 未启用 Web 服务 登录高德开放平台,勾选 Web 服务权限
请在环境变量中设置 AMAP_KEY 未配置 .env 文件 创建 .env 文件并设置 AMAP_KEY
地址解析失败 地址无法被识别 使用更详细或更简化的地址

参考链接