<p>在鸿蒙应用开发中,经常需要跳转第三方地图应用(如 <strong>腾讯地图、百度地图、高德地图</strong>)进行导航。无论是出行类 App、物流类 App,还是线下活动类应用,都存在“跳转地图导航”的实际需求。写完HarmonyOS应用拉起系列一和二后在鸿蒙开发者社区以及各类技术问答平台上很多开发者都在询问:如何实现直接拉起导航应用。本文结合拉起系列一和实战代码,讲解如何封装 <strong>MapNavigator 工具类</strong>,实现:</p>
- 判断地图应用是否安装 通过 scheme 检查(如
qqmap://、baidumap://、amapuri://),在拉起地图前先判断 App 是否存在,避免跳转失败。需要注意,这些 scheme 必须在module.json5的querySchemes字段中声明,否则canOpenLink会返回错误或不准确的结果。 - 拉起导航(startAbility 与 openLink 两种方式)
startAbilityByWant:通过构建Want对象携带导航参数,包括起点名称、起点经纬度、终点名称、终点经纬度、导航模式(驾车、步行、公交等)等,精确传递给第三方地图 App。openLink:通过 URL scheme 拼接导航参数,直接拉起地图应用进行导航,同样支持传递起终点坐标、路线偏好等信息。
- 未安装提示逻辑 如果检测到地图 App 未安装,统一调用提示方法(如
promptAction.showToast)告知用户“腾讯地图/百度地图/高德地图未安装”,同时可扩展为引导用户前往应用市场下载。 - querySchemes 配置的重要性 只有在
module.json5中声明了对应的 scheme,鸿蒙系统才能正确识别并允许通过canOpenLink或 openLink 拉起第三方 App,否则即便 App 已安装,也会出现“暂无打开方式”的提示。