微信小程序結(jié)合騰訊位置服務(wù)實(shí)現(xiàn)用戶商家距離計(jì)算

前言

小程序?qū)嵅伲嚯x計(jì)算總結(jié)复斥。

思路

一共有兩種方法营密,各有利弊:

1.利用小程序的wx.getLocation 方法得到用戶的經(jīng)緯度,然后用已知的商家的經(jīng)緯進(jìn)行計(jì)算;

2.利用騰訊地圖位置服務(wù)calculateDistance直接計(jì)算;

先熟悉下兩個(gè)單詞:

longitude:經(jīng)度;

latitude:緯度;

下邊是兩種方法的具體實(shí)現(xiàn)

一目锭、獲取用戶的位置信息,再進(jìn)行計(jì)算(wx.getLocation)

1.小程序提供了獲取用戶位置信息的api评汰,所以我們能直接獲取到經(jīng)緯度;

2.在騰訊位置服務(wù)坐標(biāo)拾取器,獲取商家的具體經(jīng)緯度(例:北京故宮博物院116.397027(經(jīng)度),39.917990(緯度))痢虹;

3.利用公式進(jìn)行兩點(diǎn)的經(jīng)緯度計(jì)算被去,需注意:小程序默認(rèn)坐標(biāo)系是wgs84,您需設(shè)置為gcj02再試奖唯;

代碼:

Page({
 data:{
    },
 onLoad: function() {
        var _this = this;
        _this.findXy() //查詢用戶與商家的距離
        },
        
   findXy() { //獲取用戶的經(jīng)緯度
        var _this = this
        wx.getLocation({
            type: 'gcj02',
            success(res) {
                _this.getDistance(res.latitude, res.longitude, 39.917990,116.397027)
            }
        })
    },
    
     Rad: function(d) { //根據(jù)經(jīng)緯度判斷距離
        return d * Math.PI / 180.0;
    },
    getDistance: function(lat1, lng1, lat2, lng2) {
        // lat1用戶的緯度
        // lng1用戶的經(jīng)度
        // lat2商家的緯度
        // lng2商家的經(jīng)度
        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) + '公里' //保留兩位小數(shù)
        console.log('經(jīng)緯度計(jì)算的距離:' + s)
        return s
    }
    )}

二惨缆、利用騰訊地圖的位置服務(wù)

1、先到騰訊位置服務(wù)注冊(cè)登錄丰捷,申請(qǐng)key坯墨、引入依賴。
下圖的第三步配置是要在小程序的后臺(tái)那里設(shè)置病往,記得不要找錯(cuò)地方了捣染。如圖:

image

2、配置完成了之后停巷,小程序重新編譯一下

3耍攘、求兩點(diǎn)距離文檔:騰訊位置-兩點(diǎn)求距

4、讀完可知,我們只需要商家的經(jīng)緯度即可,我們?cè)谛〕绦蚶飳?shí)驗(yàn)一下

// 引入SDK核心類
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');

Page({
 onLoad: function() {
        var _this = this;
        _this.findShop() //查詢用戶與商家的距離
        },
 findShop() { //拿到商家的地理位置畔勤,用到了騰訊地圖的api
        // 實(shí)例化API核心類
        var _that = this
        var demo = new QQMapWX({
            key: '你申請(qǐng)到的key' // 必填
        });
        // 調(diào)用接口
        demo.calculateDistance({
            to: [{

                latitude: 39.917990, //商家的緯度
                longitude: 116.397027, //商家的經(jīng)度
            }],
            success: function(res) {
                let hw = res.result.elements[0].distance //拿到距離(米)
                if (hw && hw !== -1) { //拿到正確的值
                    //轉(zhuǎn)換成公里
                    hw = (hw / 2 / 500).toFixed(2) + '公里'
                } else {
                    hw = "距離太近或請(qǐng)刷新重試"
                }
          
                console.log('騰訊地圖計(jì)算距離商家' + hw);
            }
        });
    }
})

可能會(huì)出現(xiàn)的錯(cuò)誤:
{status:199,message:'此key未開啟webservice功能'}

此時(shí)需要打開騰訊位置服務(wù)-key配置,設(shè)置一下剛才申請(qǐng)key的詳情頁面蕾各,把下列選項(xiàng)全部勾上,把你小程序的appid也寫上,webservice域名白名單設(shè)置為空即可庆揪。

保存完式曲,重新編譯再試

image

作者:大師兄

鏈接:https://segmentfault.com/a/1190000017401316

來源:SegmentFault

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)缸榛,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處检访。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仔掸,隨后出現(xiàn)的幾起案子脆贵,更是在濱河造成了極大的恐慌,老刑警劉巖起暮,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卖氨,死亡現(xiàn)場(chǎng)離奇詭異会烙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筒捺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門柏腻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人系吭,你說我怎么就攤上這事五嫂。” “怎么了肯尺?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵沃缘,是天一觀的道長。 經(jīng)常有香客問我则吟,道長槐臀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任氓仲,我火速辦了婚禮水慨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敬扛。我一直安慰自己晰洒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布啥箭。 她就那樣靜靜地躺著谍珊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捉蚤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天炼七,我揣著相機(jī)與錄音缆巧,去河邊找鬼。 笑死豌拙,一個(gè)胖子當(dāng)著我的面吹牛陕悬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播按傅,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捉超,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了唯绍?” 一聲冷哼從身側(cè)響起拼岳,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎况芒,沒想到半個(gè)月后惜纸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年耐版,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祠够。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粪牲,死狀恐怖古瓤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腺阳,我是刑警寧澤落君,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站舌狗,受9級(jí)特大地震影響叽奥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痛侍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一朝氓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧主届,春花似錦赵哲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绘闷,卻和暖如春橡庞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背印蔗。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工扒最, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人华嘹。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓吧趣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耙厚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子强挫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355