知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 小程序相關(guān) >
微信小程序結(jié)合騰訊地圖獲取用戶所在城市信息
發(fā)表時(shí)間:2021-1-6
發(fā)布人:葵宇科技
瀏覽次數(shù):46
背景
實(shí)現(xiàn)小程序進(jìn)去后會(huì)獲取用戶當(dāng)前所在城市,然后顯示該城市的數(shù)據(jù),并且顯示在導(dǎo)航欄和 Tab上。
微信小程序中,我們可以通過(guò)調(diào)用wx.getLocation()
獲取到設(shè)備當(dāng)前的地理位置信息,這個(gè)信息是當(dāng)前位置的經(jīng)緯度。如果我們想獲取當(dāng)前位置是處于哪個(gè)國(guó)家,哪個(gè)城市等信息,該如何實(shí)現(xiàn)呢?
微信小程序中并沒(méi)有提供這樣的API,但是沒(méi)關(guān)系,有wx.getLocation()
得到的經(jīng)緯度作為基礎(chǔ)就夠了,其他的,我們可以使用其他第三方地圖服務(wù)可以來(lái)實(shí)現(xiàn),比如騰訊地圖API。
所以整個(gè)步驟就是:
在小程序中獲取當(dāng)前的地理位置,涉及小程序API為
wx.getLocation
把第1步中獲得的經(jīng)緯度信息通過(guò)騰訊地圖的接口逆地址解析,涉及騰訊地圖接口為reverseGeocoder(options:Object)
在小程序中獲取當(dāng)前的地理位置
在小程序中,調(diào)用wx.getLocation
,使用前需要用戶授權(quán)scope.userLocation
,代碼如下
checkAuth(callback) {
wx.getSetting({
success(res) {
if (!res.authSetting\['scope.userLocation'\]) {
wx.authorize({
scope: 'scope.userLocation',
success() {
wx.getLocation({
type: 'wgs84',
success(res) {
callback(res.latitude, res.longitude)
}
})
}
})
}
}
})
}
其中type
的取值可以為:
wgs84
意思返回 gps 坐標(biāo)gcj02
返回可用于wx.openLocation
的坐標(biāo)
運(yùn)行后會(huì)提示如下信息,還需要在 app.json 中配置permission字段
查詢文檔后得知,得知需要如下配置
"permission": {
"scope.userLocation": {
"desc": "你的位置信息將用于小程序位置接口的效果展示"
}
}
desc 用于在彈出的授權(quán)提示框中展示,如下
允許后即可獲取接口返回的信息,此過(guò)程會(huì)在右上角膠囊按鈕上顯示箭頭圖標(biāo)
{
accuracy: 65
errMsg: "getLocation:ok"
horizontalAccuracy: 65
latitude: 30.25961 // 緯度,范圍為 -90~90,負(fù)數(shù)表示南緯
longitude: 120.13026 // 經(jīng)度,范圍為 -180~180,負(fù)數(shù)表示西經(jīng)
speed: \-1
verticalAccuracy: 65
}
latitude
和longitude
即是我們需要的兩個(gè)字段
騰訊地圖接口逆地址解析
以騰訊地圖為例,我們可以去騰訊地圖開(kāi)放平臺(tái)注冊(cè)一個(gè)賬號(hào),然后在它的管理后臺(tái)創(chuàng)建一個(gè)密鑰(key),以及進(jìn)行KEY設(shè)置,按照微信小程序JavaScript SDK入門及使用限制文檔
在KEY設(shè)置的啟用產(chǎn)品中,勾選 WebServiceAPI,選擇簽名校驗(yàn)方式,因?yàn)槲沂鞘褂迷崎_(kāi)發(fā)的方式,所以沒(méi)有什么域名也沒(méi)有授權(quán)IP。
這部分代碼邏輯如下
import QQMapWX from '../../scripts/qqmap-wx-jssdk.min.js'
let qqmapsdk
Page({
onLoad: function (options) {
// 實(shí)例化API核心類
qqmapsdk = new QQMapWX({
key: '開(kāi)發(fā)密鑰(key)' // 必填
});
this.checkAuth((latitude, longitude) => {
// https://lbs.qq.com/qqmap\_wx\_jssdk/method-reverseGeocoder.html
qqmapsdk.reverseGeocoder({
sig: 'KEY設(shè)置中生成的SK字符串', // 必填
location: {latitude, longitude},
success(res) {
wx.setStorageSync('loca\_city', res.result.ad\_info.city)
},
fail(err) {
console.log(err)
wx.showToast('獲取城市失敗')
},
complete() {
// 做點(diǎn)什么
}
})
})
}
})
reverseGeocoder
接口返回的結(jié)果,這里面的字段比較多,詳細(xì)可以看接口文檔,里面好幾個(gè)字段可以取到城市,其中ad_info
是行政區(qū)劃信息,我就取這里面的city
了。
來(lái)源:segmentfault
相關(guān)案例查看更多
相關(guān)閱讀
- 用戶登錄
- 云南網(wǎng)站建設(shè)首頁(yè)
- 昆明網(wǎng)站建設(shè)公司
- 云南手機(jī)網(wǎng)站建設(shè)
- 小程序公司
- 開(kāi)發(fā)框架
- 百度人工排名
- 搜索引擎優(yōu)化
- 汽車報(bào)廢回收管理系統(tǒng)
- 小程序開(kāi)發(fā)公司
- 汽車拆解管理系統(tǒng)
- 云南旅游網(wǎng)站建設(shè)
- 報(bào)廢車管理
- 網(wǎng)站建設(shè)列表網(wǎng)
- 網(wǎng)絡(luò)公司
- 保險(xiǎn)網(wǎng)站建設(shè)公司
- 手機(jī)網(wǎng)站建設(shè)
- 網(wǎng)站優(yōu)化公司
- 云南微信小程序開(kāi)發(fā)
- 網(wǎng)絡(luò)公司聯(lián)系方式
- 小程序分銷商城
- 云南網(wǎng)站建設(shè)外包
- Web開(kāi)發(fā)框架
- 大理小程序開(kāi)發(fā)
- 全國(guó)前十名小程序開(kāi)發(fā)公司
- 網(wǎng)站上首頁(yè)
- python開(kāi)發(fā)小程序
- 政府網(wǎng)站建設(shè)服務(wù)
- 云南網(wǎng)頁(yè)制作
- 網(wǎng)站小程序