HarmonyOS 鸿蒙Next中跳转到手机自带地图的导航代码

HarmonyOS 鸿蒙Next中跳转到手机自带地图的导航代码 我们有个场景, 点击我们应用的一个按钮, 底部有个选择框, 标题是选择导航, 选项包含高德地图, 百度地图, HarmonyOS自带的地图,点击后跳转到对应的应用,调起导航界面,传参中有经纬度等信息, 请问: (1)如果我想调起HarmonyOS 手机自带的地图的导航, 怎么写代码 (2)如果选择的是高德地图或者百度地图, 有代码示例吗?

4 回复

跳转到百度地图,高德地图,华为地图,并且路径规划到目标经纬度

跳转应用外三方地图

更多关于HarmonyOS 鸿蒙Next中跳转到手机自带地图的导航代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


请参考:通过Want拉起Petal 地图应用,链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/map-petalmaps-V5#section116043716599

应用内 拉起打开高德、百度地图APP导航:

为保护用户隐私,暂不提供查询已安装应用接口, 建议在拉起应用之后返回的错误信息中处理,错误码是16000001时,指定的ability不存在;

如果安装了其它地图 如高德、百度地图,需要根据对应三方地图的开发手册调用startAbility,并传入相应参数;

当前高德地图和百度地图相应能力仍在开发中,尚未具备,可持续关注官网最新消息。

启动其他应用的UIAbility 参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/uiability-startup-adjust-V5#启动其他应用的uiability

在HarmonyOS Next中跳转到手机自带地图导航的代码如下:

import wantConstant from '@ohos.app.ability.wantConstant';

let destination = {
  latitude: 39.90469,  // 目标纬度
  longitude: 116.40717 // 目标经度
};

let wantValue = {
  uri: `geo:${destination.latitude},${destination.longitude}?q=${destination.latitude},${destination.longitude}`,
  action: wantConstant.ACTION_VIEW
};

try {
  await context.startAbility(wantValue);
} catch (err) {
  console.error(`启动地图失败: ${err.code}, ${err.message}`);
}

这段代码会调用系统默认地图应用打开指定坐标位置。需要确保设备已安装地图应用。

针对HarmonyOS Next中实现地图导航跳转功能,以下是解决方案:

  1. 调用HarmonyOS自带地图导航:
import featureAbility from '@ohos.ability.featureAbility';
import wantConstant from '@ohos.app.ability.wantConstant';

let location = {
  latitude: 39.90469,  // 纬度
  longitude: 116.40717 // 经度
};

let want = {
  bundleName: "com.huawei.maps",
  abilityName: "com.huawei.maps.MapsAbility",
  uri: `geo:${location.latitude},${location.longitude}?q=${location.latitude},${location.longitude}`,
  action: "ohos.want.action.viewData",
  flags: wantConstant.Flags.FLAG_ABILITY_NEW_MISSION
};

featureAbility.startAbility(want).then(() => {
  console.log('跳转地图成功');
}).catch((err) => {
  console.error('跳转失败: ' + JSON.stringify(err));
});
  1. 调用第三方地图导航:

高德地图示例:

let amapUri = `androidamap://navi?sourceApplication=yourAppName&lat=${location.latitude}&lon=${location.longitude}&dev=0&style=2`;

let want = {
  bundleName: "com.autonavi.minimap",
  uri: amapUri,
  action: "ohos.want.action.viewData"
};

百度地图示例:

let baiduUri = `baidumap://map/navi?location=${location.latitude},${location.longitude}&src=yourAppName`;

let want = {
  bundleName: "com.baidu.BaiduMap",
  uri: baiduUri,
  action: "ohos.want.action.viewData"
};

注意事项:

  1. 需要先在config.json中声明相关权限:
"reqPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]
  1. 建议先使用system.hasBundle检查对应地图应用是否安装
  2. 不同地图的URI参数格式可能有所差异,需参考各平台最新文档,
回到顶部