HarmonyOS 鸿蒙Next 携程里拉起华为地图导航的效果是如何实现的

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 携程里拉起华为地图导航的效果是如何实现的

携程里拉起华为地图导航的效果

1、如何判断是否安装了系统地图,这边尝试用canOpenLink实现,但无法校验出是否安装了。

2、如何在应用里唤起系统地图的商店详情页,附带安装按钮的。 如果有demo的话就更好了

2 回复

可以通过startAbility来判断应用能否正常被拉起,如果拉起成功,说明应用存在,拉起失败,则应用不存在

import common from '@ohos.app.ability.common'

import { BusinessError } from '@kit.BasicServicesKit'

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

function starMapDialog(context: common.UIAbilityContext): void {

  context.startAbility({

    bundleName: 'com.huawei.hmos.maps.app',

    abilityName: 'EntryAbility'

  }).then(()=> {

    console.info('successfully.')

  }).catch((err: BusinessError) =>{

    console.info('fail.')

  })

}

@Entry

@Component

struct Index {

  build() {

    Column() {

      Button('打开地图', { stateEffect: true, type: ButtonType.Capsule })

        .width('80%')

        .height(40)

        .onClick(() => {

          let context = getContext(this) as common.UIAbilityContext

          starMapDialog(context)

        })

      Button('打开地图商店详情页', { stateEffect: true, type: ButtonType.Capsule })

        .width('80%')

        .height(40)

        .margin({top: 50})

        .onClick(() => {

          const want: Want = {

            uri: `store://appgallery.huawei.com/app/detail?id=com.huawei.hmos.maps.app`

          };

          const context = getContext(this) as common.UIAbilityContext;

          context.startAbility(want).then(()=>{

            //拉起成功

          }).catch(()=>{

            // 拉起失败

          });

        })

    }.width('100%')

  }

}

使用canOpenLink判断应用是否可访问:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/canopenlink-V5

华为地图的Schemes = “maps”

 "querySchemes": [

      "maps"

    ],
import { bundleManager } from '@kit.AbilityKit';

import { BusinessError } from '@kit.BasicServicesKit';

import { hilog } from '@kit.PerformanceAnalysisKit';

try {

  let link = 'maps://';

  let data = bundleManager.canOpenLink(link);

  hilog.info(0x0000, 'testTag', 'canOpenLink successfully: %{public}s', JSON.stringify(data));

} catch (err) {

  let message = (err as BusinessError).message;

  hilog.error(0x0000, 'testTag', 'canOpenLink failed: %{public}s', message);

}

建议可以参考拉起导航类应用的文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/start-navigation-apps-V5

作为IT专家,对于HarmonyOS 鸿蒙Next在携程应用中拉起华为地图导航效果的实现,其技术原理主要基于MapKit的集成与调用。

HarmonyOS 鸿蒙Next提供了MapKit开发框架,允许开发者在应用中嵌入地图功能。携程应用通过与HarmonyOS的MapKit集成,可以实现地图展示、路线规划、导航等功能。当用户在携程中选择目的地并触发导航功能时,携程应用会调用MapKit的API,并传递目的地信息给华为地图应用。

由于HarmonyOS支持跨设备接续和智能助手小艺的深度集成,携程应用还可以利用这些特性,提供更加无缝的导航体验。例如,用户可以在不同设备间无缝流转导航信息,或者通过小艺语音指令快速启动导航功能。

需要注意的是,实现这一效果需要携程应用开发者在开发过程中遵循HarmonyOS的开发规范,并确保与MapKit的兼容性和稳定性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部