鸿蒙Next如何跳转高德地图
在鸿蒙Next系统上开发应用时,如何实现跳转到高德地图的功能?需要调用哪个API或特定的URI协议?有没有代码示例可以参考?如果高德地图未安装,该怎么处理?
2 回复
鸿蒙Next想跳转高德地图?简单!用want和uri就行,比如:
let want = {
action: 'ohos.want.action.viewData',
entities: ['entity.system.browsable'],
uri: 'amap://navi?sourceApplication=appname&poiname=目的地&lat=39.9&lon=116.3&dev=0'
};
await context.startAbility(want);
记得先配置权限,不然高德会装傻:“啊?谁在叫我?” 😏
更多关于鸿蒙Next如何跳转高德地图的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,可以通过显式Intent跳转到高德地图的特定页面。以下是具体实现方法:
1. 跳转到高德地图主界面
import { common } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
let context = getContext(this) as common.UIAbilityContext;
let intent = {
bundleName: 'com.autonavi.minimap', // 高德地图包名
abilityName: 'com.autonavi.map.activity.NewMapActivity', // 主界面Ability
};
try {
context.startAbility(intent);
hilog.info(0x0000, 'MapJump', 'Succeeded to start ability.');
} catch (error) {
hilog.error(0x0000, 'MapJump', 'Failed to start ability. Cause: %{public}s', error.message);
}
2. 跳转到指定位置(POI)
let intent = {
bundleName: 'com.autonavi.minimap',
abilityName: 'com.autonavi.map.activity.NewMapActivity',
parameters: {
'lat': 39.90960, // 纬度
'lon': 116.39740, // 经度
'title': '天安门' // 地点名称
}
};
3. 跳转到路线规划
let intent = {
bundleName: 'com.autonavi.minimap',
abilityName: 'com.autonavi.map.activity.PathPlanningActivity',
parameters: {
'slat': 39.90960, // 起点纬度
'slon': 116.39740, // 起点经度
'sname': '起点',
'dlat': 39.98340, // 终点纬度
'dlon': 116.31640, // 终点经度
'dname': '终点'
}
};
注意事项:
- 包名验证:确保设备已安装高德地图,不同版本包名可能不同
- 权限申请:在
module.json5中添加网络权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
- 错误处理:建议添加try-catch防止跳转失败
- 参数格式:经纬度需使用数字类型,字符串参数需确认高德地图支持的key名称
备选方案:
如果显式跳转失败,可以使用隐式Intent:
let intent = {
action: 'ohos.intent.action.APP_MAP',
entities: ['entity.system.map']
};
建议在实际使用前测试目标设备上的高德地图版本兼容性。

