哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS實戰(zhàn):高德地圖定位功能完整流程詳解

尤楓 ? 來源:jf_54996641 ? 作者:jf_54996641 ? 2025-06-09 15:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

需求分析

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

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

技術(shù)實現(xiàn)

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

  1. 添加基本定位權(quán)限,在 entry 模塊下的 module.json5 中添加定位必要的兩個權(quán)限。
{
        // 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. 在頁面中進(jìn)行權(quán)限申請,一般是在 onPageShow 生命周期方法中申請,先檢查系統(tǒng) GPS 定位開關(guān)是否開啟,如果沒有開啟則提示用戶跳轉(zhuǎn)到系統(tǒng)指定位置打開。
let location =  geoLocationManager.isLocationEnabled()
 if (!location) {
        let dialog = new OpenSystemGPSEHelper()
        dialog.show(this.getUIContext(),getContext(this) as common.UIAbilityContext,()= >{
          this.currentCity = "定位失敗"
        })
      }

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

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

            uri: "location_manager_settings"

          },
  1. 確認(rèn) GPS 打開之后,開始 申請 用戶權(quán)限。
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. 如果用戶打開權(quán)限,則直接開始定位服務(wù),否則提示用戶跳轉(zhuǎn)到系統(tǒng)指定位置打開權(quán)限。
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. 確認(rèn)定位權(quán)限沒問題后,開始定位,高德提供的定位有多次和單次,這里使用單次定位。
let listener: IAMapLocationListener = {
      onLocationChanged: (location) = > {
        console.log("當(dāng)前定位1:"+location.latitude+",---longitude:"+location.longitude)
        this.transformCity(location.latitude,location.longitude)
      }, onLocationError: (error) = > {
      }
    };
    LocationManager.getInstance().addListener(listener)
    LocationManager.getInstance().initLocation()
     // 定位參數(shù)配置
    let options: AMapLocationOption = {
      //定位優(yōu)先配置選項
      priority: geoLocationManager.LocationRequestPriority.FIRST_FIX,
      //定位場景設(shè)置
      scenario: geoLocationManager.LocationRequestScenario.UNSET,
      //定位精度 單位:米
      maxAccuracy: 0,
      //指定單次定位超時時間
      singleLocationTimeout: 3000,
      //定位是否返回逆地理信息
      locatingWithReGeocode: true,
      //逆地址語言類型
      reGeocodeLanguage: AMapLocationReGeocodeLanguage.Chinese,
      isOffset: false //是否加偏
    }
    // 設(shè)置配置
    this.locationManger?.setLocationOption(AMapLocationType.Single, options)
    if (this.listener != undefined) {
      // 監(jiān)聽
      this.locationManger?.setLocationListener(AMapLocationType.Single, this.listener)
    }
    // 啟動定位
    this.locationManger?.requestSingleLocation()
  1. 定位成功拿到定位的信息,在實際開發(fā)中盡管設(shè)置中已經(jīng)設(shè)置返回逆地理信息,但并沒有返回具體信息,這點實在是無法理解,只能得到當(dāng)前位置的經(jīng)緯度。這個時候需要將經(jīng)緯度轉(zhuǎn)換為當(dāng)前位置名稱。
  2. 在開發(fā)中通過使用華為官方系統(tǒng)中的 api,對經(jīng)緯度進(jìn)行逆編碼才能獲取準(zhǔn)備的位置名稱。
let reverseGeocodeRequest:geoLocationManager.ReverseGeoCodeRequest = {"latitude":latitude, "longitude":longitude, "maxItems": 1};
    try {
      geoLocationManager.getAddressesFromLocation(reverseGeocodeRequest, (err, data) = > {})
  1. 如果地圖定位失敗,則可以根據(jù)高德地圖提供的方法,嘗試拿取歷史定位信息。
LocationManager.getInstance().getLastLocation({
      onLocationChanged: (location) = > {
        console.info('地圖定位緩存獲取成功:  ' + JSON.stringify(location))
        

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

總結(jié)

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 定位
    +關(guān)注

    關(guān)注

    5

    文章

    1607

    瀏覽量

    36758
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2156

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

    LuatOS AGPS 輔助定位開發(fā)實戰(zhàn)教程

    為解決傳統(tǒng) GPS 定位慢、功耗的痛點,AGPS 技術(shù)通過輔助數(shù)據(jù)注入提升效率。本教程以 LuatOS 開發(fā)環(huán)境為基礎(chǔ),循序漸進(jìn)地講解 AGPS 輔助定位的開發(fā)流程,包括 AGPS
    的頭像 發(fā)表于 10-31 17:34 ?1320次閱讀
    LuatOS AGPS 輔助<b class='flag-5'>定位</b>開發(fā)<b class='flag-5'>實戰(zhàn)</b>教程

    地圖與通義實驗室達(dá)成深度合作

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

    如何實現(xiàn)3秒定位?GNSS模組實戰(zhàn)指南大公開

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

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

    地圖與夸克AI眼鏡的聯(lián)合創(chuàng)新,不僅為智能眼鏡行業(yè)注入了新的活力,也為整個出行生態(tài)帶來了顛覆性變革。
    的頭像 發(fā)表于 08-06 16:35 ?2095次閱讀

    HarmonyOS 5】鴻蒙星閃NearLink詳解

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

    示波器MSOX3104A自動測量功能詳解實戰(zhàn)技巧

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

    地圖攜手華為推出長隧道車道級導(dǎo)航

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

    鴻蒙地圖功能開發(fā)【3. 代碼開發(fā)】##地圖開發(fā)##

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

    鴻蒙地圖功能開發(fā)【1. 開發(fā)準(zhǔn)備】##地圖開發(fā)##

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

    HarmonyOS 5】桌面快捷方式功能實現(xiàn)詳解

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

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

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

    HarmonyOS實戰(zhàn)地圖自定義定位圖標(biāo)展示

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

    谷歌地圖GPS定位

    谷歌地圖GPS定位:精準(zhǔn)導(dǎo)航背后的技術(shù)解析 谷歌地圖作為全球最受歡迎的地圖服務(wù)之一,其精準(zhǔn)的GPS定位
    的頭像 發(fā)表于 05-29 16:54 ?1659次閱讀

    地圖與Rokid達(dá)成合作

    近日,地圖與Rokid宣布達(dá)成合作,將共同推出基于全場景智能眼鏡Rokid Glasses的全球首個導(dǎo)航智能體(NaviAgent)應(yīng)用,標(biāo)志著
    的頭像 發(fā)表于 05-20 16:00 ?912次閱讀
    通许县| 佳木斯市| 安丘市| 绥德县| 肃南| 青铜峡市| 甘谷县| 苍溪县| 胶州市| 长丰县| 库伦旗| 宽甸| 边坝县| 祁东县| 长兴县| 吉木乃县| 清镇市| 西华县| 大兴区| 会泽县| 仙居县| 盐池县| 驻马店市| 榆社县| 金沙县| 通化市| 东乡族自治县| 安义县| 丹凤县| 云和县| 江川县| 建湖县| 巴中市| 岢岚县| 巫溪县| 南和县| 应城市| 塔城市| 亳州市| 洪江市| 横山县|