微信小程式結合騰訊地圖實現使用者商家距離計算
前言
小程式實操,距離計算總結。
思路
一共有兩種方法,各有利弊:
1.利用小程式的wx.getLocation 方法得到使用者的經緯度,然後用已知的商家的經緯進行計算;
2.利用騰訊地圖位置服務calculateDistance直接計算;
先熟悉下兩個單詞:
longitude:經度;
latitude:緯度;
下邊是兩種方法的具體實現
一、獲取使用者的位置資訊,再進行計算(wx.getLocation)
1.小程式提供了獲取使用者位置資訊的api,所以我們能直接獲取到經緯度;
2.在騰訊位置服務座標拾取器,獲取商家的具體經緯度(例:北京故宮博物院116.397027(經度),39.917990(緯度));
3.利用公式進行兩點的經緯度計算,需注意:小程式預設座標系是wgs84,您需設定為gcj02再試;
程式碼:
Page({
data:{
},
onLoad: function() {
var _this = this;
_this.findXy() //查詢使用者與商家的距離
},
findXy() { //獲取使用者的經緯度
var _this = this
wx.getLocation({
type: 'gcj02',
success(res) {
_this.getDistance(res.latitude, res.longitude, 39.917990,116.397027)
}
})
},
Rad: function(d) { //根據經緯度判斷距離
return d * Math.PI / 180.0;
},
getDistance: function(lat1, lng1, lat2, lng2) {
// lat1使用者的緯度
// lng1使用者的經度
// lat2商家的緯度
// lng2商家的經度
var radLat1 = this.Rad(lat1);
var radLat2 = this.Rad(lat2);
var a = radLat1 - radLat2;
var b = this.Rad(lng1) - this.Rad(lng2);
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * 6378.137;
s = Math.round(s * 10000) / 10000;
s = s.toFixed(2) + '公里' //保留兩位小數
console.log('經緯度計算的距離:' + s)
return s
}
)}
二、利用騰訊地圖的位置服務
1、先到騰訊位置服務註冊登入,申請key、引入依賴。
下圖的第三步配置是要在小程式的後臺那裡設定,記得不要找錯地方了。如圖:
2、配置完成了之後,小程式重新編譯一下
3、求兩點距離文件:騰訊位置-兩點求距
4、讀完可知,我們只需要商家的經緯度即可,我們在小程式裡實驗一下
// 引入SDK核心類
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
Page({
onLoad: function() {
var _this = this;
_this.findShop() //查詢使用者與商家的距離
},
findShop() { //拿到商家的地理位置,用到了騰訊地圖的api
// 例項化API核心類
var _that = this
var demo = new QQMapWX({
key: '你申請到的key' // 必填
});
// 呼叫介面
demo.calculateDistance({
to: [{
latitude: 39.917990, //商家的緯度
longitude: 116.397027, //商家的經度
}],
success: function(res) {
let hw = res.result.elements[0].distance //拿到距離(米)
if (hw && hw !== -1) { //拿到正確的值
//轉換成公里
hw = (hw / 2 / 500).toFixed(2) + '公里'
} else {
hw = "距離太近或請重新整理重試"
}
console.log('騰訊地圖計算距離商家' + hw);
}
});
}
})
可能會出現的錯誤:
{status:199,message:‘此key未開啟webservice功能’}
此時需要開啟騰訊位置服務-key配置,設定一下剛才申請key的詳情頁面,把下列選項全部勾上,把你小程式的appid也寫上,webservice域名白名單設定為空即可。
儲存完,重新編譯再試
作者:大師兄
連結:https://segmentfault.com/a/1190000017401316
來源:SegmentFault
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
相關文章
- 微信小程式 + 騰訊地圖SDK 實現路線規劃微信小程式地圖
- 微信小程式 計算兩地之間的距離 + 高德地圖獲取經緯度 + elasticsearch微信小程式地圖Elasticsearch
- 微信小程式——計算2點之間的距離微信小程式
- 微信小程式 - 輸入起點、終點獲取距離並且進行路線規劃(騰訊地圖)微信小程式地圖
- 微信小程式地圖開發總結微信小程式地圖
- 計算地圖中兩點之間的距離地圖
- 「騰訊地圖」小程式外掛地圖
- 微信小程式(JAVAScript)實現餅圖微信小程式JavaScript
- 微信小程式呼叫騰訊地圖獲取jsonp資料 解析詳細地址資訊微信小程式地圖JSON
- 透過經緯度計算距離獲取附近商家
- 微信小程式之:小程式接入高德地圖SDK微信小程式地圖
- 微信小程式開發(十一)小程式地圖元件map微信小程式地圖元件
- 實體商家需要什麼樣的微信小程式?微信小程式
- PyTorch 實戰:計算 Wasserstein 距離PyTorch
- 微信小程式--實現圖片懶載入(lazyload)微信小程式
- 微信小程式-基於高德地圖API實現天氣元件(動態效果)微信小程式地圖API元件
- 微信小程式 獲取使用者資訊微信小程式
- 當微信小程式遇上TensorFlow:小程式實現微信小程式
- 微信小程式新增外部地圖服務資料微信小程式地圖
- 微信小程式 遮罩功能實現微信小程式遮罩
- 騰訊地圖SDK Flutter外掛實現地圖Flutter
- 微信小程式+mqtt.js實現實時接收訊息微信小程式MQQTJS
- 【騰訊地圖】騰訊地圖定位解析地圖
- 微信小程式實現類3D輪播圖微信小程式3D
- 微信小程式 實現網路圖片本地快取微信小程式快取
- 微信小程式+騰訊雲直播的實時音影片實戰筆記微信小程式筆記
- 微信小程式實現軌跡回放,微信原生小程式,基於uniapp的小程式?微信小程式APP
- 微信小程式之繫結銀行卡功能實現微信小程式
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 微信小程式基於騰訊雲物件儲存的圖片上傳微信小程式物件
- 微信小程式結合php後臺實現登入授權機制詳解微信小程式PHP
- 【微信小程式canvas】實現小程式手寫板使用者簽名(附程式碼)微信小程式Canvas
- 微信小程式獲取使用者資訊方法微信小程式
- 微信小程式 getUserProfile 獲取使用者資訊微信小程式
- 微信小程式總結微信小程式
- 微信小程式歸結微信小程式
- 微信小程式實現換膚功能微信小程式
- JS實現監控微信小程式JS微信小程式