女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS實戰:高德地圖定位功能完整流程詳解

尤楓 ? 來源:jf_54996641 ? 作者:jf_54996641 ? 2025-06-09 15:23 ? 次閱讀

前言

地圖定位功能相信很多人都用過,在鴻蒙的應用程序開發中,使用高德地圖的定位功能變得十分常見,那么在鴻蒙中一次完整的地位功能怎么實現?如果定位失敗了,能否獲取前幾次的定位呢?本篇文章帶你實現一個完整的定位功能流程,建議點贊收藏!

需求分析

要想實現一個完整的定位需求流程,就必須要做好準備工作,了解實現需求的具體步驟。

  • 權限申請
  • 檢查 GPS 是否打開
  • 單次定位還是多次定位
  • 定位失敗處理

技術實現

要想實現一次完整的定位流程,必須根據需要分析一步步去實現,由于高德地圖的引入太過于簡單,這里一筆帶過。重點講解完整實現的步驟。

  1. 添加基本定位權限,在 entry 模塊下的 module.json5 中添加定位必要的兩個權限。
{
        // user_grant
        "name": "ohos.permission.APPROXIMATELY_LOCATION",
        "reason": "$string:location_permissions_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"
        }
      },
      {
        // user_grant
        "name": "ohos.permission.LOCATION",
        "reason": "$string:location_permissions_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"
        }
      },
  1. 在頁面中進行權限申請,一般是在 onPageShow 生命周期方法中申請,先檢查系統 GPS 定位開關是否開啟,如果沒有開啟則提示用戶跳轉到系統指定位置打開。
let location =  geoLocationManager.isLocationEnabled()
 if (!location) {
        let dialog = new OpenSystemGPSEHelper()
        dialog.show(this.getUIContext(),getContext(this) as common.UIAbilityContext,()= >{
          this.currentCity = "定位失敗"
        })
      }

//GPS跳轉頁面
context.startAbility(
          {
            bundleName: "com.huawei.hmos.settings",

            abilityName: "com.huawei.hmos.settings.MainAbility",

            uri: "location_manager_settings"

          },
  1. 確認 GPS 打開之后,開始 申請 用戶權限。
static applyPermission(context: common.UIAbilityContext, permissions: Array< Permissions >, grantedBlock: () = > void,
    deniedBlock?: () = > void) {
    let atManager = abilityAccessCtrl.createAtManager()
    let permissionGrantedNumber: number = 0 
    atManager.requestPermissionsFromUser(context, permissions).then((data) = > {
      for (let index = 0; index < data.authResults.length; index++) {
        if (data.authResults[index] == 0) { 
          permissionGrantedNumber++;
        }
      }
      if (permissionGrantedNumber == permissions.length) {
        grantedBlock()
      } else {
        if (deniedBlock) {
          deniedBlock()
        } else {
          PermissionUtil.openPermissionsInSystemSettings(context)
        }
      }
    })
  }
  1. 如果用戶打開權限,則直接開始定位服務,否則提示用戶跳轉到系統指定位置打開權限。
let wantInfo: Want = {
      bundleName: 'com.huawei.hmos.settings',
      abilityName: 'com.huawei.hmos.settings.MainAbility',
      uri: 'application_info_entry',
      parameters: {
        settingsParamBundleName: bundleInfo.name
      }
    }
    context.startAbility(wantInfo).then(() = > {
    })
  1. 確認定位權限沒問題后,開始定位,高德提供的定位有多次和單次,這里使用單次定位。
let listener: IAMapLocationListener = {
      onLocationChanged: (location) = > {
        console.log("當前定位1:"+location.latitude+",---longitude:"+location.longitude)
        this.transformCity(location.latitude,location.longitude)
      }, onLocationError: (error) = > {
      }
    };
    LocationManager.getInstance().addListener(listener)
    LocationManager.getInstance().initLocation()
     // 定位參數配置
    let options: AMapLocationOption = {
      //定位優先配置選項
      priority: geoLocationManager.LocationRequestPriority.FIRST_FIX,
      //定位場景設置
      scenario: geoLocationManager.LocationRequestScenario.UNSET,
      //定位精度 單位:米
      maxAccuracy: 0,
      //指定單次定位超時時間
      singleLocationTimeout: 3000,
      //定位是否返回逆地理信息
      locatingWithReGeocode: true,
      //逆地址語言類型
      reGeocodeLanguage: AMapLocationReGeocodeLanguage.Chinese,
      isOffset: false //是否加偏
    }
    // 設置配置
    this.locationManger?.setLocationOption(AMapLocationType.Single, options)
    if (this.listener != undefined) {
      // 監聽
      this.locationManger?.setLocationListener(AMapLocationType.Single, this.listener)
    }
    // 啟動定位
    this.locationManger?.requestSingleLocation()
  1. 定位成功拿到定位的信息,在實際開發中盡管設置中已經設置返回逆地理信息,但并沒有返回具體信息,這點實在是無法理解,只能得到當前位置的經緯度。這個時候需要將經緯度轉換為當前位置名稱。
  2. 在開發中通過使用華為官方系統中的 api,對經緯度進行逆編碼才能獲取準備的位置名稱。
let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude":latitude, "longitude":longitude, "maxItems": 1};
    try {
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) = > {})
  1. 如果地圖定位失敗,則可以根據高德地圖提供的方法,嘗試拿取歷史定位信息。
LocationManager.getInstance().getLastLocation({
      onLocationChanged: (location) = > {
        console.info('地圖定位緩存獲取成功:  ' + JSON.stringify(location))
        

        if (success) {
          success()
        }
      }, onLocationError: (e) = > {
        console.info('地圖定位緩存獲取失敗:  ' + JSON.stringify(e))
      
        if (success) {
          success()
        }
      }
    })
  1. 如果歷史定位信息也獲取失敗,這時就能使用默認定位位置了。

總結

定位功能實現起來比較簡單,但是完整的定位流程及細節處理才是本篇文章的關鍵,相信看完本篇文章你已經學會在鴻蒙中怎么使用高德定位功能了,快去動手嘗試一下吧!

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 定位
    +關注

    關注

    5

    文章

    1405

    瀏覽量

    35830
  • HarmonyOS
    +關注

    關注

    79

    文章

    2054

    瀏覽量

    32167
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    發布智能眼鏡行業解決方案

    近日,地圖旗下開放平臺正式發布智能眼鏡解決方案,標志著其在空間計算與智能穿戴領域的技術創新邁入新階段。
    的頭像 發表于 06-09 15:10 ?137次閱讀

    HarmonyOS實戰地圖自定義定位圖標展示

    前言 地圖定位功能基本上已經成了日常應用程序的必備功能之一,在日常開發地圖定位
    的頭像 發表于 06-09 14:59 ?38次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實戰</b>:<b class='flag-5'>高</b><b class='flag-5'>德</b><b class='flag-5'>地圖</b>自定義<b class='flag-5'>定位</b>圖標展示

    谷歌地圖GPS定位

    谷歌地圖GPS定位:精準導航背后的技術解析 谷歌地圖作為全球最受歡迎的地圖服務之一,其精準的GPS定位
    的頭像 發表于 05-29 16:54 ?151次閱讀

    地圖攜手雷鳥創新打造新一代AI+AR智能導航解決方案

    近日,地圖與雷鳥創新RayNeo宣布達成戰略合作,雙方將深度融合人工智能體和空間交互等前沿技術框架,共同打造新一代AI+AR智能導航解決方案。此次合作,標志著
    的頭像 發表于 05-26 16:01 ?188次閱讀

    HarmonyOS5云服務技術分享--登錄郵件功能整理

    服務中的??郵箱登錄認證??功能,基于ArkTS API 12實現。無論你是剛接觸HarmonyOS生態,還是想優化現有登錄流程,這篇文章都將用清晰的代碼示例和通俗的講解,帶你搞定郵箱認證的
    發表于 05-22 16:04

    地圖與Rokid達成合作

    近日,地圖與Rokid宣布達成合作,將共同推出基于全場景智能眼鏡Rokid Glasses的全球首個導航智能體(NaviAgent)應用,標志著
    的頭像 發表于 05-20 16:00 ?189次閱讀

    與華為簽署合作協議

    近日北京云信科技有限公司與華為數字能源技術有限公司在上海簽署合作協議。雙方將依托自身優勢及重點領域,通過華為超充與地圖的深入合作,共
    的頭像 發表于 05-15 14:21 ?322次閱讀

    高質量 HarmonyOS 權限管控流程

    高質量 HarmonyOS 權限管控流程HarmonyOS 應用開發過程中,往往會涉及到 敏感數據 和 硬件資源 的調動和訪問,而這部分的調用就會涉及到管控這部分的知識和內容了。我們需要對它有
    的頭像 發表于 04-02 18:29 ?608次閱讀
    高質量 <b class='flag-5'>HarmonyOS</b> 權限管控<b class='flag-5'>流程</b>

    示波器DSOX3024功能詳解及應用

    一款多功能、高效率的測試工具。本文將詳細解析DSOX3024的主要功能及其在不同應用場景中的使用。 ? 一、主要功能詳解 1. 帶寬與多通
    的頭像 發表于 03-27 15:52 ?270次閱讀
    是<b class='flag-5'>德</b>示波器DSOX3024<b class='flag-5'>功能</b><b class='flag-5'>詳解</b>及應用

    地圖與長城汽車共建出行聯合創新LAB

    近日,地圖與長城汽車在河北舉行出行聯合創新LAB揭牌儀式,雙方將圍繞導航出行領域展開深度合作,共創未來用戶智慧出行新體驗。與此同時,基于
    的頭像 發表于 01-07 10:03 ?430次閱讀

    長城汽車聯手地圖打造出行聯合創新LAB

    近日,長城汽車與地圖基于長期良好的合作基礎,聯手打造的“出行聯合創新LAB”正式在保定市長城汽車技術中心揭牌。根據共同約定,雙方將通過出行聯合創新LAB,發揮各自優勢,共同研究、探索基于用戶出行
    的頭像 發表于 01-07 09:51 ?497次閱讀

    HarmonyOS應用點擊完成時延問題定位流程及原理

    HarmonyOS應用開發中,完成時延是指用戶操作HarmonyOS移動終端時,從輸入觸控指令到界面完全刷新結束并達到可以閱讀的穩定狀態所用時間,點擊完成時延依據頁面轉場類型可以分為頁面內跳轉
    的頭像 發表于 12-23 11:15 ?795次閱讀
    <b class='flag-5'>HarmonyOS</b>應用點擊完成時延問題<b class='flag-5'>定位</b><b class='flag-5'>流程</b>及原理

    淺談芯片制造的完整流程

    在科技日新月異的今天,芯片作為信息技術的核心部件,其制作工藝的復雜性和精密性令人嘆為觀止。從一粒普通的沙子到一顆蘊含無數晶體管的高科技芯片,這一過程不僅凝聚了人類智慧的結晶,也展現了現代半導體工業的極致工藝。本文將講述芯片制造的完整流程,揭開這一高科技產品的神秘面紗。
    的頭像 發表于 10-28 14:30 ?1494次閱讀
    淺談芯片制造的<b class='flag-5'>完整流程</b>

    科智控獲得DEKRA凱ISO 26262:2018 ASIL-D功能安全流程認證證書

    近日,天津科智控股份有限公司(以下簡稱“科智控”)順利通過ISO 26262:2018 ASIL-D汽車功能安全管理體系認證,并獲得由DEKRA凱頒發的
    的頭像 發表于 07-25 15:56 ?1030次閱讀

    地圖率先入駐華為原生鴻蒙,實現跨終端無縫導航

    在近日舉辦的華為開發者大會2024上,華為正式公布了其最新的操作系統HarmonyOS NEXT,并面向開發者和先鋒用戶啟動了Beta版。而在這一重要時刻,地圖宣布成為首批登陸原生
    的頭像 發表于 06-25 10:59 ?1319次閱讀