移动应用、浏览器端应用均可调起鸿蒙版百度地图。
百度地图App工程中的module.json5配置文件中已经配置skills标签
"uris": [{"scheme": "baidumap","host": "map"}]
该调用方式是指第三方基于Harmony SDK进行应用开发时要调用Harmony版百度地图客户端需遵守的协议。该协议要正确执行除了要参数填写正确外,还必须要安装Harmony百度地图。
使用openLink实现应用跳转。在openLink接口的link字段中传入目标应用的URL信息,并将options字段中的appLinkingOnly配置为false。
示例代码
import { common, OpenLinkOptions } from '@kit.AbilityKit';import { BusinessError } from '@kit.BasicServicesKit';import { hilog } from '@kit.PerformanceAnalysisKit';const TAG: string = '[UIAbilityComponentsOpenLink]';const DOMAIN_NUMBER: number = 0xFF00;@Entry@Componentstruct Index {build() {Button('start link', { type: ButtonType.Capsule, stateEffect: true }).width('87%').height('5%').margin({ bottom: '12vp' }).onClick(() => {let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;let link: string = "baidumap://map";let openLinkOptions: OpenLinkOptions = {appLinkingOnly: false};try {context.openLink(link, openLinkOptions).then(() => {hilog.info(DOMAIN_NUMBER, TAG, 'open link success.');}).catch((err: BusinessError) => {hilog.error(DOMAIN_NUMBER, TAG, `open link failed. Code is ${err.code}, message is ${err.message}`);});} catch (paramError) {hilog.error(DOMAIN_NUMBER, TAG, `Failed to start link. Code is ${paramError.code}, message is ${paramError.message}`);}})}}
index.html示例代码
<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><h1>Hello World</h1><!--方式一、通过绑定事件window.open方法实现跳转--><button class="doOpenLink" onclick="doOpenLink()">跳转其他应用一</button><!--方式二、通过超链接实现跳转--><a href="baidumap://map">跳转其他应用二</a></body></html><script>function doOpenLink() {window.open("baidumap://map")}</script>
Web组件需要跳转DeepLink链接应用时,可通过拦截回调onLoadIntercept中对定义的事件进行处理,实现应用跳转。
import { webview } from '@kit.ArkWeb';import { BusinessError } from '@kit.BasicServicesKit';import { common } from '@kit.AbilityKit';@Entry@Componentstruct WebComponent {controller: webview.WebviewController = new webview.WebviewController();build() {Column() {Web({ src: $rawfile('index.html'), controller: this.controller }).onLoadIntercept((event) => {const url: string = event.data.getRequestUrl();if (url === 'baidumap://map') {(getContext() as common.UIAbilityContext).openLink(url).then(() => {console.log('openLink success');}).catch((err: BusinessError) => {console.error('openLink failed, err:' + JSON.stringify(err));});return true;}// 返回true表示阻止此次加载,否则允许此次加载return false;})}}}
百度地图Open API每个接口对应一个专门的Uri串,每个串中相应参数会在下面详细说明。
每个协议都可以填写的通用参数,其中coord_type指坐标类型参数,默认为bd09经纬度坐标,如用户使用的坐标类型为gcj02、wgs84,则必须传递此参数值(示例:coord_type=gcj02、coord_type=wgs84),否则会导致地点坐标位置偏移。
协议1:baidumap://map/show
协议2:baidumap://map
例1:baidumap://map/show?zoom=18¢er=39.989956,116.323066&coord_type=gcj02&src=push
例2:baidumap://map/show?bounds=4050547,12128734,4051635,12127547&coord_type=bd09mc
调起百度地图时,在主图区的指定坐标点上显示点的名称和内容信息,弹泡泡方式
协议1:baidumap://map/marker
例:baidumap://map/marker?title=我的位置&location=40.047669,116.313082&content=百度奎科大厦&src=push
协议:baidumap://map/geocoder
例1:baidumap://map/marker?name=北京市信息路甲9号&location=40.047669,116.313082&src=push
例2:baidumap://map/geocoder?address=北京市海淀区信息路甲9号&src=push
协议:baidumap://map/place/detail
例:baidumap://map/place/detail?uid=8d96925c6ccf855cc1f1cf38&src=push
协议:baidumap://map/place/search
例:baidumap://map/place/search?query=KTV&src=push&location=39.989813,116.314094&radius=1000
协议:baidumap://map/routepage
例1:baidumap://map/routepage?type=walk¶m={"mode":"walking","fr":"test"}
例2:baidumap://map/routepage?popRoot=no&needCloud=yes&type=walk&src=walk.activity.widget
协议:baidumap://map/direction
例:baidumap://map/direction?popRoot=no&src=duhelper&pageflag=4&origin=%E6%88%91%E7%9A%84%E4%BD%8D%E7%BD%AE&destination=name%3A%E8%B1%86%E5%90%84%E5%BA%84%E6%96%B0%E6%9D%91%7Clatlng%3A40.122275%2C116.312750&mode=transit&destination_uid=d6df91c1b2e8f26af7b91665
协议:baidumap://map/navi
目的地:百度大厦
baidumap://map/navi?location=12947474.59,4846476.50998&uid=435d7aea036e54355abbbcc8&coord_type=bd09mc
目的地:深圳北站
baidumap://map/navi?location=22.615108,114.035529&uid=6f6241e3c05ab1a093114c5e&coord_type=bd09ll
协议:baidumap://map/nearby/sug
例:baidumap://map/nearby/sug?poiX=39.989813&poiY=116.314094
协议:baidumap://map/busnearby
例:baidumap://map/busnearby?param={"posX":12942656, "posY":4869801, "cityId":131}
协议:baidumap://map/walknavi
例:baidumap://map/walknavi?origin=39.915291,116.403857&destination=40.056858,116.308194
协议:baidumap://map/bikenavi
例:baidumap://map/bikenavi?origin=39.915291,116.403857&destination=40.056858,116.308194&coord_type=bd09ll
协议:baidumap://map/truck/navigation
例:baidumap://map/truck/navigation?&plate_number=粤B69999&truck_type=1&height=3&width=5&length=13&axle_count=4&power_type=1&emission_limit=4&load_weight=7&weight=78&scene=0&location=40.057023,116.307852&coord_type=1&plate_color=2&is_trailer=1
上一篇
下一篇
本篇文章对您是否有帮助?