<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本篇文章分享一下我在實際開發小程式時遇到的需要獲取使用者當前位置的問題,在小程式開發過程中經常使用到的獲取定位功能。uniapp官方也提供了相應的API供我們使用。
uni.getLocation(OBJECT)
獲取當前的地理位置、速度。
OBJECT 引數說明
引數名 | 型別 | 必填 | 說明 | 平臺差異說明 |
---|---|---|---|---|
type | String | 否 | 預設為 wgs84 返回 gps 座標,gcj02 返回國測局座標,可用於 uni.openLocation 和 map 元件座標,App 和 H5 需設定定位 SDK 資訊才可支援 gcj02。 | |
altitude | Boolean | 否 | 傳入 true 會返回高度資訊,由於獲取高度需要較高精確度,會減慢介面返回速度 | 位元組跳動小程式、飛書小程式、支付寶小程式不支援 |
geocode | Boolean | 否 | 預設false,是否解析地址資訊 | 僅App平臺支援(安卓需指定 type 為 gcj02 並設定三方定位SDK) |
highAccuracyExpireTime | Number | 否 | 高精度定位超時時間(ms),指定時間內返回最高精度,該值3000ms以上高精度定位才有效果 | App (3.2.11+)、H5 (3.2.11+)、微信小程式 (基礎庫 2.9.0+) |
timeout | String | 否 | 預設為 5,定位超時時間,單位秒 | 僅飛書小程式支援 |
cacheTimeout | Number | 否 | 定位快取超時時間,單位秒;每次定位快取當前定位資料,並記下時間戳,當下次呼叫在cacheTimeout之內時,返回快取資料 | 僅飛書小程式、支付寶小程式支援 |
accuracy | String | 否 | 預設為 high,指定期望精度,支援 high,best。當指定 high 時,期望精度值為100m,當指定 best 時期望精度值為20m。當定位得到的精度不符合條件時,在timeout之前會繼續定位,嘗試拿到符合要求的定位結果 | 僅飛書小程式支援 |
isHighAccuracy | Boolean | 否 | 開啟高精度定位 | App (3.4.0+)、H5 (3.4.0+)、微信小程式 (基礎庫 2.9.0+) |
success | Function | 是 | 介面呼叫成功的回撥函數,返回內容詳見返回引數說明。 | |
fail | Function | 否 | 介面呼叫失敗的回撥函數 | |
complete | Function | 否 | 介面呼叫結束的回撥函數(呼叫成功、失敗都會執行) |
success 返回引數說明
引數 | 說明 |
---|---|
latitude | 緯度,浮點數,範圍為-90~90,負數表示南緯 |
longitude | 經度,浮點數,範圍為-180~180,負數表示西經 |
speed | 速度,浮點數,單位m/s |
accuracy | 位置的精確度 |
altitude | 高度,單位 m |
verticalAccuracy | 垂直精度,單位 m(Android 無法獲取,返回 0) |
horizontalAccuracy | 水平精度,單位 m |
address | 地址資訊(僅App端支援,需設定geocode為true) |
address 地址資訊說明
屬性 | 型別 | 描述 | 說明 |
---|---|---|---|
country | String | 國家 | 如“中國”,如果無法獲取此資訊則返回undefined |
province | String | 省份名稱 | 如“北京市”,如果無法獲取此資訊則返回undefined |
city | String | 城市名稱 | 如“北京市”,如果無法獲取此資訊則返回undefined |
district | String | 區(縣)名稱 | 如“朝陽區”,如果無法獲取此資訊則返回undefined |
street | String | 街道資訊 | 如“酒仙橋路”,如果無法獲取此資訊則返回undefined |
streetNum | String | 獲取街道門牌號資訊 | 如“3號”,如果無法獲取此資訊則返回undefined |
poiName | String | POI資訊 | 如“電子城.國際電子總部”,如果無法獲取此資訊則返回undefined |
postalCode | String | 郵政編碼 | 如“100016”,如果無法獲取此資訊則返回undefined |
cityCode | String | 城市程式碼 | 如“010”,如果無法獲取此資訊則返回undefined |
範例
uni.getLocation({ type: 'wgs84', success: function (res) { console.log('當前位置的經度:' + res.longitude); console.log('當前位置的緯度:' + res.latitude); } });
#注意
H5 平臺
App 平臺
小程式平臺
補充: 以上內容為 官方檔案 搬運過來的,詳情可點選連結跳轉至官網。
我們本次開發的是小程式,需要注意的是,我們本次小程式獲取定位使用的是騰訊位置服務,所以需要申請騰訊位置服務的SDK。
申請步驟:詳細檔案
點選檔案中的申請祕鑰連結,跳轉至騰訊位置服務平臺,如下圖所示申請即可。(沒有賬號的先註冊賬號)
開通webserviceAPI服務:控制檯 ->應用管理 -> 我的應用 ->新增key-> 勾選WebServiceAPI -> 儲存
(小程式SDK需要用到webserviceAPI的部分服務,所以使用該功能的KEY需要具備相應的許可權)
1、申請Key
2、複製申請好的Key值等待使用
微信小程式JavaScriptSDK下載地址(點選文字即可跳轉)
下載好解壓完成後,我們一般放在根目錄下面的common目錄下(如下圖)
安全域名設定,在小程式管理後臺 -> 開發 -> 開發管理 -> 開發設定 -> “伺服器域名” 中設定request合法域名,新增https://apis.map.qq.com
到這裡終於算是申請完了,在設定一下就好了。
"permission" : { "scope.userLocation" : { "desc" : "為了您更好的體驗,請確認獲取您的位置" } } "requiredPrivateInfos": ["getLocation", "chooseLocation"]
這裡我放到了common目錄下:
import QQMapWX from "../../common/qqmap-wx-jssdk.js"
methods: { //獲取位置資訊 async getLocationInfo() { return new Promise((resolve) => { //位置資訊預設資料 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); }, }); }); } }
函數呼叫可以自己去選擇在頁面載入的時候載入,或者有一個觸發條件。(我是用的頁面載入,所以放在了onload方法中)。
async onLoad() { const location = await this.getLocationInfo(); this.position = location.address },
注意:這裡使用的this.position,是在data中定義的,程式碼範例中沒有寫。需要自己在data方法中定一個position變數
<view style="margin-top: 40rpx;margin-left: 16rpx;color:red;"> 當前定位:{{position}} </view>
到這裡就結束啦!想要的獲取使用者位置資訊的功能就實現啦。
到此這篇關於uniapp小程式實戰之利用騰訊地圖獲取定位的文章就介紹到這了,更多相關uniapp小程式用騰訊地圖獲取定位內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45