日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

探索HarmonyOS位置服務(wù):為用戶提供直觀的坐標(biāo)顯示

ITMING ? 來源:ITMING ? 作者:ITMING ? 2024-08-20 10:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于作者
白曉明
寧夏圖爾科技有限公司董事長兼CEO、堅(jiān)果派聯(lián)合創(chuàng)始人
華為HDE、潤和軟件HiHope社區(qū)專家、鴻蒙KOL、倉頡KOL
華為開發(fā)者學(xué)堂/51CTO學(xué)堂/CSDN學(xué)堂認(rèn)證講師
開放原子開源基金會2023開源貢獻(xiàn)之星
OpenHarmony三方庫貢獻(xiàn)者
公眾號:開源開發(fā)者新視界(openwatcher)

在先前的環(huán)節(jié)中,我們所獲取到的位置信息是以經(jīng)緯度的方式來呈現(xiàn)。不可否認(rèn),這種呈現(xiàn)方式在描述位置時具有極高的準(zhǔn)確性,能夠精確地定位到地球的每一個點(diǎn)。然而,不得不承認(rèn)的是,對于普通用戶而言,經(jīng)緯度的表述形式顯示得過于專業(yè)和晦澀,缺乏直觀性和易理解性,確實(shí)不夠友好。

HarmonyOS的位置服務(wù)(Location Kit)則猶如一位貼心的助手,為開發(fā)者提供了地理編碼轉(zhuǎn)化和逆地理編碼轉(zhuǎn)化這兩種極為實(shí)用的能力。其中,地理編碼就像是一個信息豐富的寶藏,它包含了多個屬性來對位置進(jìn)行細(xì)致入微的描述。比如,它涵蓋了國家這個宏觀層面的標(biāo)識,讓我們能夠快速確定位置所在的大區(qū)域;還有行政區(qū)劃,進(jìn)一步明確了具體的地區(qū)范圍;街道的描述則讓我們對周邊環(huán)境有了更清晰的認(rèn)知;門牌號更是精準(zhǔn)地指向了具體的地點(diǎn);而地址描述則以一種更為通俗易懂的方式將所有這些信息整合起來,為用戶提供一個全面而直觀的位置表達(dá)。這樣豐富多樣的信息呈現(xiàn)方式,無疑更加便于用戶理解和把握自己所處的位置,無論是在日常的出行導(dǎo)航中,還是在社交應(yīng)用里與朋友分享位置,都能讓用戶輕松便捷地知曉自己的具體方位,為我們的數(shù)字生活帶來更多的便利和舒適體驗(yàn)。

查看地理編碼與逆地理編碼服務(wù)是否可用

首先,開發(fā)者在進(jìn)行操作時,需要優(yōu)先調(diào)用isGeoServiceAvailable方法來查詢地理編碼與逆地理編碼服務(wù)的可用性。這一步驟至關(guān)重要,因?yàn)橹挥挟?dāng)確定服務(wù)可用的情況下,才能夠進(jìn)行后續(xù)的編碼轉(zhuǎn)化操作。如果經(jīng)過查詢發(fā)現(xiàn)服務(wù)不可用,那么就意味著該設(shè)備并不具備地理編碼與逆地理編碼轉(zhuǎn)化能力。這種情況下,開發(fā)者務(wù)必不要使用相關(guān)接口,以免引起不必要的錯誤或者異常情況,從而確保應(yīng)用程序的穩(wěn)定性。

let isAvailable = geoLocationManager.isGeocoderAvailable();

把坐標(biāo)轉(zhuǎn)化為地理位置信息

在實(shí)際應(yīng)用中,我們可以通過調(diào)用getCurrentLocation()函數(shù)獲取當(dāng)前位置,也可以使用on('locationChange')方法進(jìn)行位置變化訂閱。然而,通過這兩種方式所獲取到的位置信息都是以坐標(biāo)形式呈現(xiàn)出來的,對于普通用戶而言,這種坐標(biāo)形式的位置信息可能會顯得比較抽象且難以理解。

為了能夠讓用戶更加直觀地理解位置信息,開發(fā)者可以調(diào)用getAddressesFromLocation方法,該方法能夠?qū)⒆鴺?biāo)形式的位置信息轉(zhuǎn)化為地理位置信息。比如國家信息、行政區(qū)、城市信息、區(qū)/縣信息、路名等等。具體位置信息如以下類所示:

/**
 * 地理編碼地址信息
 */
export interface GeoAddress {
    /**
     * 緯度信息,正值表示北緯,負(fù)值表示南緯。
     * 取值范圍為[-90, 90],僅支持WGS84坐標(biāo)系。
     */
    latitude?: number;
    /**
     * 經(jīng)度信息,正值表示東經(jīng),負(fù)值表示西經(jīng)。
     * 取值范圍為[-180, 180],僅支持WGS84坐標(biāo)系。
     */
    longitude?: number;
    /**
     * 位置描述信息的語言。
     * zh:中文;en:英文。
     */
    locale?: string;
    /**
     * 詳細(xì)地址信息。
     */
    placeName?: string;
    /**
     * 國家碼信息。
     */
    countryCode?: string;
    /**
     * 國家信息。
     */
    countryName?: string;
    /**
     * 一級行政區(qū),一般是省/州。
     */
    administrativeArea?: string;
    /**
     * 二級行政區(qū),一般是市。
     */
    subAdministrativeArea?: string;
    /**
     * 城市信息,一般是市。
     */
    locality?: string;
    /**
     * 子城市信息,一般是區(qū)/縣。
     */
    subLocality?: string;
    /**
     * 路名信息。
     */
    roadName?: string;
    /**
     * 子路名信息。
     */
    subRoadName?: string;
    /**
     * 門牌號信息。
     */
    premises?: string;
    /**
     * 郵政編碼信息。
     */
    postalCode?: string;
    /**
     * 聯(lián)系方式信息。
     */
    phoneNumber?: string;
    /**
     * 位置信息附件的網(wǎng)址信息。
     */
    addressUrl?: string;
    /**
     * 附加的描述信息。
     * 目前包含城市編碼cityCode和區(qū)劃編碼adminCode。
     */
    descriptions?: Array< string >;
    /**
     * 附加的描述信息數(shù)量。
     * 取值大于等于0,推薦該值小于10。
     */
    descriptionsSize?: number;
}

以轉(zhuǎn)化當(dāng)前坐標(biāo)為例,代碼如下所示:

/**
 * 逆地理編碼請求參數(shù)
 */
export interface ReverseGeoCodeRequest {
    /**
     * 指定位置描述信息的語言。
     * zh:中文;en:英文。
     */
    locale?: string;
    /**
     * 限制查詢結(jié)果在指定的國家區(qū),采用ISO3166-1 alpha-2。
     * CN代表中國。
     */
    country?: string;
    /**
     * 緯度信息。
     */
    latitude: number;
    /**
     * 經(jīng)度信息。
     */
    longitude: number;
    /**
     * 指定返回位置信息的最大個數(shù)。
     */
    maxItems?: number;
}

/**
 * 坐標(biāo)轉(zhuǎn)化為地理位置信息
 * @param latitude
 * @param longitude
 * @param maxItems
 * @returns
 */
static async getAddressesFromLocation(latitude: number,
  longitude: number, maxItems: number = 1): Promise< geoLocationManager.GeoAddress[] | undefined > {
  const request: geoLocationManager.ReverseGeoCodeRequest = {
    locale: "zh",
    country: "CN",
    latitude,
    longitude,
    maxItems
  };
  let location: geoLocationManager.GeoAddress[] | undefined = undefined;
  try {
    location = await geoLocationManager.getAddressesFromLocation(request);
    console.info(`[AppLogger]坐標(biāo)轉(zhuǎn)化為地理位置信息:${JSON.stringify(location)}`);
  } catch (error) {
    const err = error as BusinessError;
    console.error(`[AppLogger]坐標(biāo)轉(zhuǎn)化為地理位置信息異常:${JSON.stringify(err)}`);
  }
  return location;
}


Button('坐標(biāo)轉(zhuǎn)化為地理位置信息')
  .onClick(async () = > {
    this.location = await LocationUtil.getSingleLocationRequest(geoLocationManager.LocatingPriority.PRIORITY_LOCATING_SPEED);
    if (this.location !== undefined) {
      this.locationArr = await LocationUtil.getAddressesFromLocation(this.location?.latitude, this.location?.longitude);
    }
  })

image20240817155340722.png

把地理位置信息轉(zhuǎn)化為坐標(biāo)

在導(dǎo)航類App的實(shí)際使用場景中,當(dāng)用戶進(jìn)行位置搜索時,通常會輸入具體的位置信息,比如某個商場的名稱、某條街道的地址或者某個景點(diǎn)的具體描述等。但是,對于地圖的顯示而言,它所需要的是精確的位置坐標(biāo)信息,只有這樣才能夠準(zhǔn)確地在地圖上進(jìn)行標(biāo)注和展示。

在這種情況下,為了實(shí)現(xiàn)從用戶輸入的位置描述到地圖所需的坐標(biāo)信息的轉(zhuǎn)化,開發(fā)者可以調(diào)用getAddressesFromLocationName方法。這個方法就像是一座橋梁,能夠?qū)⒂脩糨斎氲闹庇^的位置描述轉(zhuǎn)化為地圖能夠識別和使用的位置坐標(biāo)。通過這樣的轉(zhuǎn)化,不僅可以滿足地圖顯示的需求,還能夠?yàn)橛脩籼峁└訙?zhǔn)確和便捷的導(dǎo)航服務(wù),讓用戶能夠更加輕松地找到自己想要達(dá)到的目的地。

以轉(zhuǎn)化用戶輸入地理位置為例,代碼如下所示:

/**
 * 地理編碼請求參數(shù)
 */
export interface GeoCodeRequest {
    /**
     * 位置描述信息的語言。
     * zh:中文;en:英文。
     */
    locale?: string;
    /**
     * 限制查詢結(jié)果在指定的國家區(qū),采用ISO3166-1 alpha-2。
     * CN代表中國。
     */
    country?: string;
    /**
     * 位置信息描述。
     */
    description: string;
    /**
     * 返回結(jié)果信息的最大個數(shù)。
     */
    maxItems?: number;
    /**
     * 最小緯度信息。
     */
    minLatitude?: number;
    /**
     * 最小經(jīng)度信息。
     */
    minLongitude?: number;
    /**
     * 最大緯度信息。
     */
    maxLatitude?: number;
    /**
     * 最大經(jīng)度信息。
     */
    maxLongitude?: number;
}

/**
 * 地理位置轉(zhuǎn)化為坐標(biāo)信息
 * @param description
 * @param maxItems
 * @returns
 */
static async getAddressesFromLocationName(description: string,
  maxItems: number = 1): Promise< geoLocationManager.GeoAddress[] | undefined > {
  const request: geoLocationManager.GeoCodeRequest = {
    description,
    maxItems
  };
  let location: geoLocationManager.GeoAddress[] | undefined = undefined;
  try {
    location = await geoLocationManager.getAddressesFromLocationName(request);
    console.info(`[AppLogger]地理位置轉(zhuǎn)化為坐標(biāo)信息:${JSON.stringify(location)}`);
  } catch (error) {
    const err = error as BusinessError;
    console.error(`[AppLogger]地理位置轉(zhuǎn)化為坐標(biāo)信息異常:${JSON.stringify(err)}`);
  }
  return location;
}

TextInput({ placeholder: "請輸入具體的位置信息..." })
  .onChange((value: string) = > {
    this.val = value;
  })
Button('坐標(biāo)轉(zhuǎn)化為地理位置信息')
  .onClick(async () = > {
    if (LocationUtil.usedGeocoderAvailable()) {
      this.locationArr = await LocationUtil.getAddressesFromLocationName(this.val, 5);
    }
  })

image20240817170727668.png

使用ForEach渲染列表數(shù)據(jù)

List() {
  ForEach(this.locationArr, (item: geoLocationManager.GeoAddress) = > {
    ListItem() {
      Column({ space: 8 }) {
        Text(item.placeName)
          .fontSize(16)
        Text(`坐標(biāo):[${item.latitude}, ${item.longitude}]`)
          .fontSize(12)
        Text(`${item.countryName} ${item.administrativeArea} ${item.locality} ${item.subLocality} ${item.roadName} ${item.subRoadName}`)
          .fontSize(12)
      }
      .width('100%')
      .padding(12)
      .backgroundColor(0xF1F3F5)
      .borderRadius(8)
      .justifyContent(FlexAlign.Start)
    }
  })
}
.width('90%')
.divider({
  strokeWidth: 4,
  color: 0xFFFFFF
})

image20240817193205402.png

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    5

    瀏覽量

    2223
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2157

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    曉網(wǎng)科技:國內(nèi)UWB高精度定位的實(shí)力派,重新定義工業(yè)級位置服務(wù)

    安裝(施工時間縮短70%),標(biāo)簽續(xù)航168小時,MQTT開放協(xié)議,邊緣計(jì)算降服務(wù)器成本。已服務(wù)國家電網(wǎng)、汽車制造、超市、醫(yī)院、聯(lián)通展廳等數(shù)百個項(xiàng)目,驗(yàn)證了穩(wěn)定可靠。曉網(wǎng)科技以高精度、易部署、開放接口、綜合成本優(yōu),成為工業(yè)級位置服務(wù)
    的頭像 發(fā)表于 04-17 17:04 ?599次閱讀

    開通App Linking服務(wù)

    首次使用App Linking服務(wù)前,需要先開通此服務(wù)。 登錄AppGallery Connect,點(diǎn)擊“開發(fā)與服務(wù)”。 在項(xiàng)目列表中點(diǎn)擊HarmonyOS應(yīng)用所在的項(xiàng)目。 在左側(cè)導(dǎo)航
    發(fā)表于 04-15 16:47

    服務(wù)發(fā)布配置開發(fā)者服務(wù)信息

    您作為開發(fā)者的相關(guān)信息將面向元服務(wù)發(fā)布區(qū)域的用戶公開,其中客服聯(lián)系方式可能會提供用戶,用于咨詢相關(guān)問題。 登錄AppGallery Connect,點(diǎn)擊“APP與元
    發(fā)表于 10-31 17:58

    服務(wù)配置支持設(shè)備

    發(fā)布時,您可以為元服務(wù)配置分發(fā)至多種設(shè)備,默認(rèn)發(fā)布設(shè)備您創(chuàng)建元服務(wù)用時選擇的設(shè)備類型,您可以根據(jù)實(shí)際情況進(jìn)行修改。您只需發(fā)布一次,用戶即可在多種設(shè)備上使用您的元
    發(fā)表于 10-22 16:54

    商湯科技Claude API用戶提供搬家服務(wù)

    9月5日,Anthropic 宣布將禁止中資控股超過50%的公司使用Claude服務(wù),并限制企業(yè)通過海外云服務(wù)、第三方平臺等方式間接使用。
    的頭像 發(fā)表于 09-08 10:32 ?982次閱讀
    商湯科技<b class='flag-5'>為</b>Claude API<b class='flag-5'>用戶</b><b class='flag-5'>提供</b>搬家<b class='flag-5'>服務(wù)</b>

    HarmonyOSAI編程智能問答

    CodeGenie基于生成式搜索能力,通過查詢生成、內(nèi)容優(yōu)選服務(wù)高效理解用戶意圖,問答交互式地獲取編碼相關(guān)知識。 對話示例 在對話區(qū)域輸入需要查詢的問題,開始問答。示例如下: ArkTS如何實(shí)現(xiàn)
    發(fā)表于 09-03 16:17

    HarmonyOS 5】鴻蒙中進(jìn)度條的使用詳解

    HarmonyOS 5】鴻蒙中進(jìn)度條的使用詳解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、HarmonyOS中Progress進(jìn)度
    的頭像 發(fā)表于 07-11 18:26 ?1329次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙中進(jìn)度條的使用詳解

    坐標(biāo)測量機(jī)精度保障,盡在蔡司三坐標(biāo)代測服務(wù)套餐

    的ZEISSMetrologyCare蔡司三坐標(biāo)測量機(jī)年度服務(wù)套餐致力于您的計(jì)量工作保駕護(hù)航。ZEISSMetrologyCare蔡司三坐標(biāo)測量機(jī)年度
    的頭像 發(fā)表于 07-09 14:03 ?893次閱讀
    三<b class='flag-5'>坐標(biāo)</b>測量機(jī)精度保障,盡在蔡司三<b class='flag-5'>坐標(biāo)</b>代測<b class='flag-5'>服務(wù)</b>套餐

    HarmonyOS 5 入門系列 】鴻蒙HarmonyOS示例項(xiàng)目講解

    HarmonyOS 5 入門系列 】鴻蒙HarmonyOS示例項(xiàng)目講解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財# 一、前言:移動開發(fā)
    的頭像 發(fā)表于 07-07 11:57 ?1231次閱讀
    【 <b class='flag-5'>HarmonyOS</b> 5 入門系列 】鴻蒙<b class='flag-5'>HarmonyOS</b>示例項(xiàng)目講解

    HarmonyOS NEXT應(yīng)用開發(fā)-Notification Kit(用戶通知服務(wù))通知類型、級別與渠道

    。 SERVICE_INFORMATION 2 服務(wù)提醒。該類型對應(yīng)SlotLevelLEVEL_HIGH。 CONTENT_INFORMATION 3 內(nèi)容資訊。該類型對應(yīng)SlotLevel
    發(fā)表于 06-09 14:39

    HarmonyOS NEXT應(yīng)用開發(fā)-Notification Kit(用戶通知服務(wù))更多系統(tǒng)能力

    = _NotificationActionButton 描述通知中顯示的操作按鈕。 系統(tǒng)能力: SystemCapability.Notification.Notification 類型 說明
    發(fā)表于 06-04 15:43

    HarmonyOS5云服務(wù)技術(shù)分享--Serverless抽獎模板部署

    通過endCallback實(shí)現(xiàn)中獎消息推送 ? ??安全加固?? 非免認(rèn)證模式下建議: 添加請求頻率限制 使用HTTPS加密回調(diào) 用戶ID做哈希處理 五、常見問題QA ? 部署后訪問顯示空白
    發(fā)表于 05-22 20:25

    HarmonyOS5云服務(wù)技術(shù)分享--ArkTS開發(fā)Node環(huán)境

    氣的方式探索這個功能,結(jié)尾還有實(shí)用總結(jié)和鼓勵彩蛋哦~? ? 一、HarmonyOS云函數(shù)開發(fā):核心能力與價值 HarmonyOS的云函數(shù)(Serverless)開發(fā)者
    發(fā)表于 05-22 17:21

    HarmonyOS5云服務(wù)技術(shù)分享--登錄郵件功能整理

    登錄頻率限制、異地登錄提醒等規(guī)則。 ??云函數(shù)擴(kuò)展??:通過認(rèn)證觸發(fā)器實(shí)現(xiàn)注冊成功自動發(fā)送歡迎郵件等場景。 結(jié)語?? 郵箱認(rèn)證作為用戶體系的基礎(chǔ)能力,HarmonyOS通過ArkTS API 12提供
    發(fā)表于 05-22 16:04

    HarmonyOS5云服務(wù)技術(shù)分享--認(rèn)證文檔問題

    /oh_modules)。 三、結(jié)尾總結(jié) 通過本文,您已完成AGC認(rèn)證服務(wù)HarmonyOS ArkTS集成流程。后續(xù)可結(jié)合業(yè)務(wù)需求擴(kuò)展登錄方式(如第三方社交賬號),并通過AGC控制臺監(jiān)控用戶行為
    發(fā)表于 05-22 13:20
    井陉县| 河津市| 双辽市| 家居| 三穗县| 文山县| 宿州市| 乐至县| 阳泉市| 鞍山市| 肃宁县| 洞头县| 高唐县| 江西省| 揭阳市| 普格县| 宁明县| 山阴县| 望谟县| 逊克县| 乾安县| 彝良县| 延寿县| 武穴市| 三原县| 蒙城县| 通渭县| 兖州市| 龙里县| 延川县| 正定县| 左权县| 丽江市| 台前县| 五指山市| 陆丰市| 依兰县| 什邡市| 天祝| 天长市| 玉溪市|