国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    1586

    瀏覽量

    36695
  • HarmonyOS
    +關注

    關注

    80

    文章

    2153

    瀏覽量

    36037
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【RK3568 NPU實戰】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果

    【RK3568 NPU實戰】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果
    的頭像 發表于 11-10 15:58 ?1056次閱讀
    【RK3568 NPU<b class='flag-5'>實戰</b>】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附<b class='flag-5'>完整流程</b>與效果

    LuatOS AGPS 輔助定位開發實戰教程

    為解決傳統 GPS 定位慢、功耗的痛點,AGPS 技術通過輔助數據注入提升效率。本教程以 LuatOS 開發環境為基礎,循序漸進地講解 AGPS 輔助定位的開發流程,包括 AGPS
    的頭像 發表于 10-31 17:34 ?1185次閱讀
    LuatOS AGPS 輔助<b class='flag-5'>定位</b>開發<b class='flag-5'>實戰</b>教程

    地圖與通義實驗室達成深度合作

    在AI原生浪潮推動下,阿里巴巴集團旗下地圖與通義實驗室宣布達成深度合作,并在近日發布的地圖
    的頭像 發表于 08-15 17:23 ?1618次閱讀

    如何實現3秒定位?GNSS模組實戰指南大公開

    傳統定位耗時過長?GNSS模組讓3秒極速定位成為現實。本文為你提供實戰指南,詳解操作步驟與技術要點,助你輕松達成目標。在緊急救援、智能交通等場景中,3秒
    的頭像 發表于 08-08 17:10 ?991次閱讀
    如何實現3秒<b class='flag-5'>定位</b>?GNSS模組<b class='flag-5'>實戰</b>指南大公開

    地圖攜手夸克AI眼鏡開啟出行新方式

    地圖與夸克AI眼鏡的聯合創新,不僅為智能眼鏡行業注入了新的活力,也為整個出行生態帶來了顛覆性變革。
    的頭像 發表于 08-06 16:35 ?1943次閱讀

    HarmonyOS 5】鴻蒙星閃NearLink詳解

    HarmonyOS 5】鴻蒙星閃NearLink詳解 ##鴻蒙開發能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財# 一、前言 鴻蒙星閃NearLink Kit
    的頭像 發表于 07-11 18:24 ?1897次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙星閃NearLink<b class='flag-5'>詳解</b>

    示波器MSOX3104A自動測量功能詳解實戰技巧

    一、引言 在電子工程、通信調試、自動化控制等領域,示波器是工程師不可或缺的測試工具。是科技(Keysight)的MSOX3104A示波器憑借其高精度、多功能特性,尤其在自動測量功能上實現了智能化
    的頭像 發表于 07-03 13:52 ?682次閱讀
    是<b class='flag-5'>德</b>示波器MSOX3104A自動測量<b class='flag-5'>功能</b><b class='flag-5'>詳解</b>與<b class='flag-5'>實戰</b>技巧

    地圖攜手華為推出長隧道車道級導航

    地圖攜手華為Pura80系列,支持超長隧道全程車道級導航,為行車安全與效率帶來全新升級。
    的頭像 發表于 07-02 16:44 ?1392次閱讀

    鴻蒙地圖功能開發【3. 代碼開發】##地圖開發##

    在開發地圖相關功能的時候也是這個想法。我最近做的項目是類似于校園配送的app,下單的用戶需要去查看配送員的實時位置。配送員的app負責定位,用戶的app上查看地圖,測試的時候發現,不管
    發表于 06-29 22:59

    鴻蒙地圖功能開發【1. 開發準備】##地圖開發##

    ? 對于地圖功能的開發,有以下三種思路 使用鴻蒙官方的Map Kit進行開發 使用第三方地圖的SDK(例如地圖、百度
    發表于 06-29 22:52

    HarmonyOS 5】桌面快捷方式功能實現詳解

    HarmonyOS 5】桌面快捷方式功能實現詳解 ##鴻蒙開發能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財# 一、前言 在移動應用開發中,如何讓用戶快速
    的頭像 發表于 06-21 16:42 ?2267次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】桌面快捷方式<b class='flag-5'>功能</b>實現<b class='flag-5'>詳解</b>

    HarmonyOS 5】鴻蒙中的UIAbility詳解(三)

    HarmonyOS 5】鴻蒙中的UIAbility詳解(三) ##鴻蒙開發能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財# 一、前言 本文是鴻蒙中的UIAbility
    的頭像 發表于 06-14 22:32 ?745次閱讀

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

    前言 地圖定位功能基本上已經成了日常應用程序的必備功能之一,在日常開發地圖定位
    的頭像 發表于 06-09 14:59 ?741次閱讀
    <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 ?1467次閱讀

    地圖與Rokid達成合作

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