欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

uniapp小程序?qū)崙?zhàn)之利用騰訊地圖獲取定位

 更新時間:2023年02月08日 15:34:21   作者:不苒  
使用uniapp是因?yàn)樗且粋€使用vue.js開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可以發(fā)布到ios,android,web以及各種小程序,快應(yīng)用等多個平臺,下面這篇文章主要給大家介紹了關(guān)于uniapp小程序?qū)崙?zhàn)之利用騰訊地圖獲取定位的相關(guān)資料,需要的朋友可以參考下

前言

本篇文章分享一下我在實(shí)際開發(fā)小程序時遇到的需要獲取用戶當(dāng)前位置的問題,在小程序開發(fā)過程中經(jīng)常使用到的獲取定位功能。uniapp官方也提供了相應(yīng)的API供我們使用。

官網(wǎng)地址:uni.getLocation(OBJECT))

1、首先看官網(wǎng)

uni.getLocation(OBJECT)

獲取當(dāng)前的地理位置、速度。

OBJECT 參數(shù)說明

參數(shù)名類型必填說明平臺差異說明
typeString默認(rèn)為 wgs84 返回 gps 坐標(biāo),gcj02 返回國測局坐標(biāo),可用于 uni.openLocation 和 map 組件坐標(biāo),App 和 H5 需配置定位 SDK 信息才可支持 gcj02。
altitudeBoolean傳入 true 會返回高度信息,由于獲取高度需要較高精確度,會減慢接口返回速度字節(jié)跳動小程序、飛書小程序、支付寶小程序不支持
geocodeBoolean默認(rèn)false,是否解析地址信息僅App平臺支持(安卓需指定 type 為 gcj02 并配置三方定位SDK)
highAccuracyExpireTimeNumber高精度定位超時時間(ms),指定時間內(nèi)返回最高精度,該值3000ms以上高精度定位才有效果App (3.2.11+)、H5 (3.2.11+)、微信小程序 (基礎(chǔ)庫 2.9.0+)
timeoutString默認(rèn)為 5,定位超時時間,單位秒僅飛書小程序支持
cacheTimeoutNumber定位緩存超時時間,單位秒;每次定位緩存當(dāng)前定位數(shù)據(jù),并記下時間戳,當(dāng)下次調(diào)用在cacheTimeout之內(nèi)時,返回緩存數(shù)據(jù)僅飛書小程序、支付寶小程序支持
accuracyString默認(rèn)為 high,指定期望精度,支持 high,best。當(dāng)指定 high 時,期望精度值為100m,當(dāng)指定 best 時期望精度值為20m。當(dāng)定位得到的精度不符合條件時,在timeout之前會繼續(xù)定位,嘗試拿到符合要求的定位結(jié)果僅飛書小程序支持
isHighAccuracyBoolean開啟高精度定位App (3.4.0+)、H5 (3.4.0+)、微信小程序 (基礎(chǔ)庫 2.9.0+)
successFunction接口調(diào)用成功的回調(diào)函數(shù),返回內(nèi)容詳見返回參數(shù)說明。
failFunction接口調(diào)用失敗的回調(diào)函數(shù)
completeFunction接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回參數(shù)說明

參數(shù)說明
latitude緯度,浮點(diǎn)數(shù),范圍為-90~90,負(fù)數(shù)表示南緯
longitude經(jīng)度,浮點(diǎn)數(shù),范圍為-180~180,負(fù)數(shù)表示西經(jīng)
speed速度,浮點(diǎn)數(shù),單位m/s
accuracy位置的精確度
altitude高度,單位 m
verticalAccuracy垂直精度,單位 m(Android 無法獲取,返回 0)
horizontalAccuracy水平精度,單位 m
address地址信息(僅App端支持,需配置geocode為true)

address 地址信息說明

屬性類型描述說明
countryString國家如“中國”,如果無法獲取此信息則返回undefined
provinceString省份名稱如“北京市”,如果無法獲取此信息則返回undefined
cityString城市名稱如“北京市”,如果無法獲取此信息則返回undefined
districtString區(qū)(縣)名稱如“朝陽區(qū)”,如果無法獲取此信息則返回undefined
streetString街道信息如“酒仙橋路”,如果無法獲取此信息則返回undefined
streetNumString獲取街道門牌號信息如“3號”,如果無法獲取此信息則返回undefined
poiNameStringPOI信息如“電子城.國際電子總部”,如果無法獲取此信息則返回undefined
postalCodeString郵政編碼如“100016”,如果無法獲取此信息則返回undefined
cityCodeString城市代碼如“010”,如果無法獲取此信息則返回undefined

示例

uni.getLocation({
	type: 'wgs84',
	success: function (res) {
		console.log('當(dāng)前位置的經(jīng)度:' + res.longitude);
		console.log('當(dāng)前位置的緯度:' + res.latitude);
	}
});

#注意

H5 平臺

  • 在較新的瀏覽器上,H5 端獲取定位信息,要求部署在 https 服務(wù)上,本地預(yù)覽(localhost)仍然可以使用 http 協(xié)議。
  • 國產(chǎn)安卓手機(jī)上,H5若無法定位,檢查手機(jī)是否開通位置服務(wù)、GPS,ROM是否給該瀏覽器位置權(quán)限、瀏覽器是否對網(wǎng)頁彈出請求給予定位的詢問框。
  • 安卓手機(jī) 在原生App內(nèi)嵌H5時,無法定位需要原生App處理Webview。
  • 移動端瀏覽器 普遍僅支持GPS定位,在GPS信號弱的地方可能定位失敗。
  • PC 設(shè)備 使用 Chrome 瀏覽器的時候,位置信息是連接谷歌服務(wù)器獲取的,國內(nèi)用戶可能獲取位置信息失敗。
  • 微信公眾號可使用微信js sdk,詳見
  • 2.9.9 版本以上,優(yōu)化 uni.getLocation 支持通過 IP 定位。默認(rèn)通過 GPS 獲取,如果獲取失敗,備選方案是通過 IP 定位獲取,需填寫三方地圖服務(wù)平臺的秘鑰(key)。key配置:manifest.json —> H5配置 —> 定位和地圖 —> key。

App 平臺

  • Android由于谷歌服務(wù)被墻,或者手機(jī)上沒有GMS,想正常定位就需要向高德等三方服務(wù)商申請SDK資質(zhì),獲取AppKey。否則打包后定位就會不準(zhǔn)。云打包時需要在manifest的SDK配置中填寫 Appkey。在 manifest 可視化界面有詳細(xì)申請指南,詳見:https://ask.dcloud.net.cn/article/29。離線打包自行在原生工程中配置。注意包名、appkey、證書信息必須匹配。真機(jī)運(yùn)行可以正常定位,是因?yàn)檎鏅C(jī)運(yùn)行基座使用了DCloud向高德申請的sdk配置,打包后必須由開發(fā)者自己申請。如果手機(jī)自帶GMS且網(wǎng)絡(luò)環(huán)境可以正常訪問google定位服務(wù)器,此時無需在 manifest 填寫高德定位的 sdk 配置。
  • 注意手機(jī)自身要開啟定位、同時要給App賦予定位權(quán)限。權(quán)限判斷可參考:https://uniapp.dcloud.net.cn/api/system/getappauthorizesetting.html
  • <map> 組件默認(rèn)為國測局坐標(biāo) gcj02,調(diào)用 uni.getLocation 返回結(jié)果傳遞給 <map> 組件時,需指定 type 為 gcj02。
  • 定位 和 map 是兩個東西。通過 getLocation 得到位置坐標(biāo)后,可以在任意map地圖上展示,比如定位使用高德,地圖使用 google 的 webview 版地圖。如果坐標(biāo)系不同時,注意轉(zhuǎn)換坐標(biāo)系。
  • 如果使用 web-view 加載地圖,無需在manifest里配地圖的sdk配置。
  • 持續(xù)定位方案:iOS端可以申請持續(xù)定位權(quán)限,參考。Android如果進(jìn)程被殺,代碼無法執(zhí)行??梢允褂?unipush ,通過服務(wù)器激活A(yù)pp,執(zhí)行透傳消息,讓App啟動然后采集位置。Android上,即使自己寫原生插件做后臺進(jìn)程,也很容易被殺,unipush是更合適的方案
  • 3.3.0 版本以上 優(yōu)化系統(tǒng)定位模塊,可不使用三方定位SDK的進(jìn)行高精度定位,具體參考:系統(tǒng)定位。

小程序平臺

  • api默認(rèn)不返回詳細(xì)地址中文描述。需要中文地址有2種方式:1、使用高德地圖小程序sdk,在app和微信上都可以獲得中文地址,參考。2、只考慮app,使用plus.geolocation也可以獲取中文地址。manifest里的App SDK配置僅用于app,小程序無需在這里配置。
  • 可以通過用戶授權(quán)API來判斷用戶是否給應(yīng)用授予定位權(quán)限,詳見
  • 在 微信小程序 中,當(dāng)用戶離開應(yīng)用后,此接口無法調(diào)用,需要申請 后臺持續(xù)定位權(quán)限 ,另外新版本中需要使用 wx.onLocationChange 監(jiān)聽位置信息變化;當(dāng)用戶點(diǎn)擊“顯示在聊天頂部”時,此接口可繼續(xù)調(diào)用

補(bǔ)充: 以上內(nèi)容為 官方文檔 搬運(yùn)過來的,詳情可點(diǎn)擊鏈接跳轉(zhuǎn)至官網(wǎng)。

我們本次開發(fā)的是小程序,需要注意的是,我們本次小程序獲取定位使用的是騰訊位置服務(wù),所以需要申請騰訊位置服務(wù)的SDK。

2、騰訊位置服務(wù)平臺申請密鑰和下載SDK

申請步驟詳細(xì)文檔

2.1 申請開發(fā)者秘鑰

點(diǎn)擊文檔中的申請秘鑰鏈接,跳轉(zhuǎn)至騰訊位置服務(wù)平臺,如下圖所示申請即可。(沒有賬號的先注冊賬號)

2.2 開通webserviceAPI服務(wù)

開通webserviceAPI服務(wù):控制臺 ->應(yīng)用管理 -> 我的應(yīng)用 ->添加key-> 勾選WebServiceAPI -> 保存
(小程序SDK需要用到webserviceAPI的部分服務(wù),所以使用該功能的KEY需要具備相應(yīng)的權(quán)限)

1、申請Key

2、復(fù)制申請好的Key值等待使用

2.3 下載微信小程序JavaScriptSDK

微信小程序JavaScriptSDK下載地址(點(diǎn)擊文字即可跳轉(zhuǎn))

下載好解壓完成后,我們一般放在根目錄下面的common目錄下(如下圖)

2.4 安全域名設(shè)置

安全域名設(shè)置,在小程序管理后臺 -> 開發(fā) -> 開發(fā)管理 -> 開發(fā)設(shè)置 -> “服務(wù)器域名” 中設(shè)置request合法域名,添加https://apis.map.qq.com

到這里終于算是申請完了,在配置一下就好了。

3、配置manifest.json文件

 "permission" : {
	 "scope.userLocation" : {
	     "desc" : "為了您更好的體驗(yàn),請確認(rèn)獲取您的位置"
	 }
}	
 "requiredPrivateInfos": ["getLocation", "chooseLocation"]

4、示例代碼展示

4.1 引用下載好的SDK

這里我放到了common目錄下:

import QQMapWX from "../../common/qqmap-wx-jssdk.js"

4.2 獲取定位函數(shù)示例

methods: {
	//獲取位置信息
  async getLocationInfo() {
    return new Promise((resolve) => {
      //位置信息默認(rèn)數(shù)據(jù)
      let location = {
        longitude: 0,
        latitude: 0,
        province: "",
        city: "",
        area: "",
        street: "",
        address: "",
      };
      uni.getLocation({
        type: "gcj02",
        success(res) {
          location.longitude = res.longitude;
          location.latitude = res.latitude;
          // 騰訊地圖Api
          const qqmapsdk = new QQMapWX({
            key: 'XXXXXXXXXXXXXXXXXXXXXXXX'  //這里填寫自己申請的key
          });
          qqmapsdk.reverseGeocoder({
            location,
            success(response) {
              let info = response.result;
        	  console.log(info);
              location.province = info.address_component.province;
              location.city = info.address_component.city;
              location.area = info.address_component.district;
              location.street = info.address_component.street;
              location.address = info.address;
              resolve(location);
            },
          });
        },
        fail(err) {
			console.log(err)
          resolve(location);
        },
      });
    });
  }
 }

4.3 調(diào)用函數(shù)

函數(shù)調(diào)用可以自己去選擇在頁面加載的時候加載,或者有一個觸發(fā)條件。(我是用的頁面加載,所以放在了onload方法中)。

async onLoad() {
	const location = await this.getLocationInfo();
	this.position = location.address
},

注意:這里使用的this.position,是在data中定義的,代碼示例中沒有寫。需要自己在data方法中定一個position變量

4.4 頁面渲染

<view style="margin-top: 40rpx;margin-left: 16rpx;color:red;">
	當(dāng)前定位:{{position}}
</view>

5、效果展示

到這里就結(jié)束啦!想要的獲取用戶位置信息的功能就實(shí)現(xiàn)啦。

總結(jié)

到此這篇關(guān)于uniapp小程序?qū)崙?zhàn)之利用騰訊地圖獲取定位的文章就介紹到這了,更多相關(guān)uniapp小程序用騰訊地圖獲取定位內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript 命名空間 使用介紹

    JavaScript 命名空間 使用介紹

    使用JavaScript實(shí)現(xiàn)命名空間就沒有這么舒服了,Javascript只有函數(shù)作用域,什么塊兒啊、神馬文件啊統(tǒng)統(tǒng)都認(rèn)為是一個命名空間的,有時候因?yàn)橐恍┲孛麊栴}導(dǎo)致的錯誤讓人莫名其妙,難以調(diào)試解決
    2013-08-08
  • JS導(dǎo)入本地json文件數(shù)據(jù)的三類方法舉例講解

    JS導(dǎo)入本地json文件數(shù)據(jù)的三類方法舉例講解

    作為一名剛?cè)胄械拈_發(fā)者,你可能會遇到需要在JavaScript中引用JSON文件的情況,下面這篇文章主要給大家介紹了關(guān)于JS導(dǎo)入本地json文件數(shù)據(jù)的三類方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • uniapp 引用 js 組件的方法(場景分析)

    uniapp 引用 js 組件的方法(場景分析)

    在UniApp開發(fā)過程中,我們不僅需要掌握各種UI組件的使用方法,還需要了解如何在項(xiàng)目中引入JS文件,在本文中,我將介紹UniApp中如何引入JS的方法,感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • js 鍵盤記錄實(shí)現(xiàn)(兼容FireFox和IE)

    js 鍵盤記錄實(shí)現(xiàn)(兼容FireFox和IE)

    用js實(shí)現(xiàn)鍵盤記錄,要關(guān)注瀏覽器的三種按鍵事件類型,即keydown,keypress和keyup,它們分別對應(yīng)onkeydown、onkeypress和onkeyup這三個事件句柄。一個典型的按鍵會產(chǎn)生所有這三種事件,依次是keydown,keypress,然后是按鍵釋放時候的keyup。
    2010-02-02
  • JavaScript運(yùn)動框架 解決速度正負(fù)取整問題(一)

    JavaScript運(yùn)動框架 解決速度正負(fù)取整問題(一)

    這篇文章主要為大家詳細(xì)介紹了JavaScript運(yùn)動框架的第一部分,解決速度正負(fù)取整問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • layUI實(shí)現(xiàn)列表查詢功能

    layUI實(shí)現(xiàn)列表查詢功能

    這篇文章主要為大家詳細(xì)介紹了layUI實(shí)現(xiàn)列表查詢功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • javascript設(shè)計模式之解釋器模式詳解

    javascript設(shè)計模式之解釋器模式詳解

    這篇文章主要介紹了javascript設(shè)計模式之解釋器模式詳解,當(dāng)有一個語言需要解釋執(zhí)行,并且可以將該語言中的句子表示為一個抽象語法樹的時候,可以考慮使用解釋器模式,需要的朋友可以參考下
    2014-06-06
  • IE6已終止操作問題的2種情況及解決

    IE6已終止操作問題的2種情況及解決

    打開某個頁面時,彈出提示框“Internet Explorer無法打開Internet 站,經(jīng)過一番奮戰(zhàn),利用排除法解決了問題,共發(fā)現(xiàn)2種情況
    2014-04-04
  • 關(guān)于預(yù)加載InstantClick的問題解決方法

    關(guān)于預(yù)加載InstantClick的問題解決方法

    本篇文章主要介紹了關(guān)于預(yù)加載InstantClick的問題解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • javascript加號"+"的二義性說明

    javascript加號"+"的二義性說明

    單個的加號作為運(yùn)算符在 JavaScript 中有三種作用。
    2013-03-03

最新評論