expo-gaode-map-web-api
Web API 开发 (Web API)
描述
协助开发者使用 expo-gaode-map-web-api 包。该包是纯 JavaScript 实现,封装了高德 Web 服务 API,支持跨平台使用。
使用场景
- 需要使用高德最新的 V5 版路径规划(支持更多策略、新能源车等)。
- 需要跨城公交路径规划。
- 需要在非原生环境(如纯 JS 逻辑层)进行地理编码或算路。
- 原生搜索包无法满足特定的 API 需求时。
开发指令
- Key 配置:
- 方式 A:在基础包初始化时传入
webKey - 方式 B:直接
new GaodeWebAPI({ key }) - 注意:如果走方式 A,且基础包通过
initSDK()初始化,那么也要先完成隐私确认
- 方式 A:在基础包初始化时传入
- 实例化:创建
GaodeWebAPI实例。 - 调用服务:
- 路径规划:
api.route.driving/walking/transit - 地理编码:
api.geocode.geocode/regeocode
- 路径规划:
⚠️ 性能优化提示
当处理 API 返回的 polyline 数据时,强烈建议结合 ExpoGaodeMapModule 的原生计算能力:
- 解析:使用
ExpoGaodeMapModule.parsePolyline(str)解析坐标串,比 JS 手动 split 快得多。 - 优化:使用
ExpoGaodeMapModule.simplifyPolyline(points, tolerance)进行 RDP 抽稀,显著减少地图渲染压力。
🛡️ 类型安全与稳定性
本库提供了完整的 TypeScript 定义,请参考 类型定义文档 了解详情。
核心原则:请勿使用 any,始终导入并使用正确的类型(如 DrivingRouteResponse, Step, Path 等)。
稳定性特性
- 自动重试:网络波动或限流时自动重试(默认 3 次)。
- LRU 缓存:可开启内存缓存,减少重复请求,提升性能。
- 请求取消:支持
AbortSignal,防止输入提示等场景下的竞态问题。
快速模式
✅ 正确:全局下发 Web Key
// 推荐做法:在 Core 或 Navigation 初始化时一并传入
ExpoGaodeMapModule.initSDK({
androidKey: '...',
iosKey: '...',
webKey: 'YOUR_WEB_KEY'
});
// 之后随处可用,可开启缓存
const api = new GaodeWebAPI({ enableCache: true });
✅ 正确:处理 API 错误
try {
await api.route.driving(...);
} catch (e) {
if (e instanceof GaodeAPIError) {
console.log('高德服务报错:', e.info);
}
}
参考文档
More from tomwq/expo-gaode-map
expo-gaode-map-navigation
高德导航全功能一体化方案:集成完整地图能力(MapView/全部覆盖物/离线地图/定位/几何计算,无需核心包),提供官方 NaviView 导航 UI(语音/事件/路况/指南针);支持多模式路径规划(驾车/步行/骑行/货车/摩托车/电动车)及策略/限行/途经点;具备高级独立算路能力(预估/路线预览/选择/启动);包含 Config Plugin 自动配置;与 expo-gaode-map 存在 SDK 冲突,项目仅需安装此包。若使用本包导出的地图或定位能力,同样必须先完成 `setPrivacyShow`、`setPrivacyAgree`。
20expo-gaode-map-search
高德原生搜索高性能方案:基于原生 SDK 实现,无 Web 配额限制;提供全场景 POI 搜索(关键字/周边/沿途/多边形/ID详情);支持输入提示(Autocomplete)与逆地理编码(坐标转地址);提供完整 TypeScript 定义;通常依赖核心包或导航包完成 Key 配置。
17expo-gaode-map
Expo 高德地图核心能力:原生 MapView 渲染(标准/卫星/夜间/导航),手势与相机控制;定位服务(单次/连续/后台定位,蓝点样式与跟随);覆盖物绘制(Marker/Polyline/Polygon/Circle/HeatMap/MultiPoint/Cluster,C++ 引擎驱动的高性能聚合);离线地图下载与管理;类型安全的 TS API 与原生几何计算(距离、最近点吸附、轨迹抽稀、点在多边形内、路径长度);支持 Config Plugin 自动配置与 initSDK(webKey/iosKey/androidKey) 初始化;适配 iOS/Android。注意:所有地图/定位接口前必须先完成 `setPrivacyShow`、`setPrivacyAgree`。
16