前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >鸿蒙原生应用如何使用高德地图导航功能

鸿蒙原生应用如何使用高德地图导航功能

作者头像
徐建国
发布2024-01-04 15:08:29
2420
发布2024-01-04 15:08:29
举报
文章被收录于专栏:个人路线个人路线

经过坚果派内部的测试,最后发现,其实这个问题还是有解决的办法的。不信,你继续往后读。

一、创建项目

image-20240102142924183

i

二、Want学习

Want的定义与用途

Want是一种对象,用于在应用组件之间传递信息。

其中,一种常见的使用场景是作为startAbility()方法的参数。例如,当UIAbilityA需要启动UIAbilityB并向UIAbilityB传递一些数据时,可以使用Want作为一个载体,将数据传递给UIAbilityB。

Want用法示意

Want的类型

显式Want:在启动目标应用组件时,调用方传入的want参数中指定了abilityName和bundleName,称为显式Want。

显式Want通常用于在当前应用中启动已知的目标应用组件,通过提供目标应用组件所在应用的Bundle名称信息(bundleName)并在Want对象内指定abilityName来启动目标应用组件。当有明确处理请求的对象时,显式Want是一种简单有效的启动目标应用组件的方式。

代码语言:javascript
复制
import Want from '@ohos.app.ability.Want';

let wantInfo: Want = {
  deviceId: '', // deviceId为空表示本设备
  bundleName: 'com.nut.17752170152',
  abilityName: 'FuncAbility',
}

隐式Want:在启动目标应用组件时,调用方传入的want参数中未指定abilityName,称为隐式Want。

当需要处理的对象不明确时,可以使用隐式Want,在当前应用中使用其他应用提供的某个能力,而不关心提供该能力的具体应用。隐式Want使用skills标签来定义需要使用的能力,并由系统匹配声明支持该请求的所有应用来处理请求。例如,需要打开一个链接的请求,系统将匹配所有声明支持该请求的应用,然后让用户选择使用哪个应用打开链接。

代码语言:javascript
复制
import Want from '@ohos.app.ability.Want';

let wantInfo: Want = {
  // uncomment line below if wish to implicitly query only in the specific bundle.
  // bundleName: 'com.example.myapplication',
  action: 'ohos.want.action.search',
  // entities can be omitted
  entities: [ 'entity.system.browsable' ],
  uri: 'https://www.test.com:8080/query/student',
  type: 'text/plain',
};

三、导航

用法

代码语言:javascript
复制
cat=android.intent.category.DEFAULT
dat=androidamap://navi?sourceApplication=appname&poiname=fangheng&lat=36.547901&lon=104.258354&dev=1&style=2
pkg=com.autonavi.minimap

参数说明

参数

说明

是否必填

navi

服务类型

sourceApplication

第三方调用应用名称。如 amap

poiname

POI 名称

lat

纬度

lon

经度

dev

是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)

style

导航方式(0 速度快;1 费用少;2路程短;3 不走高速;4 躲避拥堵;5 不走高速且避免收费;6 不走高速且躲避拥堵;7;躲避收费和拥堵;8 不走高速躲避收费和拥堵)由于与用户本地设置冲突,Android平台自8.2.6版本起不支持该参数,偏好设置将以用户本地设置为准

关键代码

代码语言:javascript
复制
  let context = getContext(this) as common.UIAbilityContext
    context.startAbility({
      uri: "androidamap://navi?sourceApplication=appname&lat=" + this.latitude + "&lon=" + this.longitude + "&dev=1",
      action: "android.intent.action.VIEW"
    })

效果图

i

四、路径规划

用法

代码语言:javascript
复制
act=android.intent.action.VIEW
cat=android.intent.category.DEFAULT
dat=amapuri://route/plan/?sid=&slat=39.92848272&slon=116.39560823&sname=A&did=&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0
pkg=com.autonavi.minimap

参数说明:

参数

说明

是否必填

route

服务类型

sourceApplication

第三方调用应用名称。如 amap

sid

起点的POI ID(例如天安门为B000A60DA1)

slat

起点纬度。如果不填写此参数则自动将用户当前位置设为起点纬度。

slon

起点经度。如果不填写此参数则自动将用户当前位置设为起点经度。

sname

起点名称

did

终点的POI ID (例如天安门为B000A60DA1)

dlat

终点纬度

dlon

终点经度

dname

终点名称

dev

起终点是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)

m

驾车方式 =0(速度快)=1(费用少) =2(路程短)=3 不走高速 =4(躲避拥堵)=5(不走高速且避免收费) =6(不走高速且躲避拥堵) =7(躲避收费和拥堵) =8(不走高速躲避收费和拥堵)。公交 =0(速度快)=1(费用少) =2(换乘较少)=3(步行少)=4(舒适)=5(不乘地铁)由于与用户本地设置冲突,Android平台7.5.9版本起不支持该参数,偏好设置将以用户本地设置为准

t

t = 0(驾车)= 1(公交)= 2(步行)= 3(骑行)= 4(火车)= 5(长途客车) (骑行仅在V7.8.8以上版本支持)

rideType

仅当 t = 3 时该参数生效。rideType = elebike 电动车,rideType = bike/为空 自行车(电动车规划仅在V8.65.0及以上版本支持)

输入起点和终点,搜索公交、驾车或步行的线路。支持版本 V4.2.1 起

关键代码

代码语言:javascript
复制
    let context = getContext(this) as common.UIAbilityContext
    context.startAbility({
      uri: "amapuri://route/plan/?did=&dlat=36.07&dlon=103.82&dname=坚果派17752170152&dev=0&t=0",
      
      action: "android.intent.action.VIEW"
    })

效果

image-202

五、Web组件实现地图图显示

代码语言:javascript
复制
import web_webview from '@ohos.web.webview';

@Entry
@Component
struct MainPage {
  controller: web_webview.WebviewController = new web_webview.WebviewController()

  build() {
    Row() {
      Column() {

        Web({ src: $rawfile("drive.html"), controller: this.controller })
      }
      .width('100%')
    }
    .height('100%')
  }
}

效果图

im

六、总结

一个人走的快,一群人走的远,也得益于我是坚果派的成员,互相学习,一起成长,精彩的内容才可以带给大家。比如这次web组件和want组件的学习。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建项目
  • 二、Want学习
    • Want的定义与用途
      • Want的类型
      • 三、导航
        • 用法
          • 参数说明
            • 关键代码
              • 效果图
              • 四、路径规划
                • 用法
                  • 参数说明:
                    • 关键代码
                      • 效果
                      • 五、Web组件实现地图图显示
                        • 效果图
                        • 六、总结
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档