鸿蒙Next如何跳转高德地图

在鸿蒙Next系统上开发应用时,如何实现跳转到高德地图的功能?需要调用哪个API或特定的URI协议?有没有代码示例可以参考?如果高德地图未安装,该怎么处理?

2 回复

鸿蒙Next想跳转高德地图?简单!用wanturi就行,比如:

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': '终点'
  }
};

注意事项:

  1. 包名验证:确保设备已安装高德地图,不同版本包名可能不同
  2. 权限申请:在module.json5中添加网络权限:
{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}
  1. 错误处理:建议添加try-catch防止跳转失败
  2. 参数格式:经纬度需使用数字类型,字符串参数需确认高德地图支持的key名称

备选方案:

如果显式跳转失败,可以使用隐式Intent:

let intent = {
  action: 'ohos.intent.action.APP_MAP',
  entities: ['entity.system.map']
};

建议在实际使用前测试目标设备上的高德地图版本兼容性。

回到顶部