亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

小程序里附近的人功能實(shí)現(xiàn) 附近的人功能如何實(shí)現(xiàn)


小程序里附近的人功能實(shí)現(xiàn) 附近的人功能如何實(shí)現(xiàn)

文章插圖
文末有源碼最近好多同學(xué)問(wèn)石頭哥附近的人如何實(shí)現(xiàn) 。今天呢,就借助這篇文章,給大家做一個(gè)系統(tǒng)的解答 。
老規(guī)矩,先看效果圖
可以看到我們?cè)诘貓D上顯示了附近的一些標(biāo)記點(diǎn) 。
接下來(lái)就教大家如何實(shí)現(xiàn)附近的位置 。
一,創(chuàng)建數(shù)據(jù)首先我們查詢(xún)附近的人的時(shí)候,需要先有附近人的位置,也就是經(jīng)緯度 。這里我以幾個(gè)城市的經(jīng)緯度為例 。

大家可以自行百度查找你所需要的經(jīng)緯度 。
這里經(jīng)緯度查到后,我們需要把這些位置信息存到數(shù)據(jù)庫(kù)里 。
1,注意存位置時(shí)必須是Point類(lèi)型
如上圖所示,我們可以直接在云開(kāi)發(fā)數(shù)據(jù)庫(kù)里添加位置信息,類(lèi)型是geopoint類(lèi)型 。
如我添加的北京的位置如下

這里按照這樣的類(lèi)型,自己多添加幾個(gè)城市的經(jīng)緯度 。當(dāng)然現(xiàn)實(shí)開(kāi)發(fā)中,應(yīng)該是添加附近人的位置(經(jīng)緯度)
2,批量添加(選看)如果感覺(jué)一個(gè)添加比較麻煩的話(huà),可以先添加一條,然后導(dǎo)出為json,自己在json里批量編輯 。

一定要注意_id不能重復(fù),格式要保持一致 。這樣你批量編輯后,再把這個(gè)json重新導(dǎo)入到數(shù)據(jù)即可 。

批量導(dǎo)入不是本節(jié)的重點(diǎn),就不在講解 。我這里默認(rèn)你已經(jīng)添加好位置信息了
3,修改數(shù)據(jù)表權(quán)限我們這里要讓所有人可以讀取到數(shù)據(jù),必須設(shè)置權(quán)限如下
4,創(chuàng)建對(duì)應(yīng)字段的索引(**重要)我們?nèi)绻氩檎椅恢眯畔?,必須設(shè)置存位置的對(duì)應(yīng)字段對(duì)應(yīng)的索引才可以 。
如果不創(chuàng)建索引直接查詢(xún),會(huì)報(bào)如下錯(cuò)誤 。

所以我們必須要先創(chuàng)建對(duì)應(yīng)的索引 。如下圖所示添加索引

然后做如下設(shè)置即可

到這里準(zhǔn)備工作就做完了 。
二,查找附近的人我們查找附近的人,肯定是想按照排序由近到遠(yuǎn)的顯示附近的人在地圖上,所以這里我們就要用到geoNear做聚合查詢(xún) 。
geonear查詢(xún)有兩種方式,建議大家用Aggregate.geoNear

詳細(xì)介紹大家可以自己去看官方文檔
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/aggregate/Aggregate.geoNear.html
用這個(gè)的主要好處是,我們可以拿到附近人離自己的距離

這個(gè)距離在做附近的人時(shí)很重要的 。既然可以直接拿到,能省很多事的 。具體的代碼后面給大家列出來(lái),我們先繼續(xù)往下學(xué)習(xí)
三,獲取當(dāng)前的位置我們要做附近的人肯定要先獲取自己的位置,獲取自己的位置就用wx.getLocation即可,對(duì)應(yīng)文檔如下
https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getLocation.html
這個(gè)使用之前必須要在app.json里注冊(cè)權(quán)限,如果不注冊(cè)權(quán)限,就會(huì)報(bào)如下提示

所以在app.json里寫(xiě)如下代碼
"permission": {"scope.userLocation": {"desc": "獲取位置所需要的權(quán)限"}}
四,獲取附近人的經(jīng)緯度代碼其實(shí)很簡(jiǎn)單,如下

這樣我們就可以按照由近到遠(yuǎn)的順序獲取附近的人了,結(jié)果如下

石頭哥是在杭州,可以看到幾個(gè)城市里離杭州最近的是上海159公里的距離 。
五,在地圖上顯示附近的人既然位置都已經(jīng)查詢(xún)到了,我們就可以在地圖上顯示了,地圖上顯示用到了map組件的markers

對(duì)應(yīng)的js代碼如下

下面我把完整的代碼貼出來(lái)給到大家
wxml代碼
js代碼Page({data: {markers: []},onl oad() {wx.getLocation({ //1,獲取自己的位置type: 'wgs84',success: res => {const latitude = res.latitudeconst longitude = res.longitudeconsole.log('當(dāng)前在杭州的經(jīng)緯度', res.longitude, res.latitude)//2,查找附近的人let markers = []const db = wx.cloud.database()const $ = db.command.aggregatedb.collection('location').aggregate().geoNear({distanceField: 'juli', // 與給定點(diǎn)的距離spherical: true,near: db.Geo.Point(longitude, latitude), //當(dāng)前自己的位置}).end().then(res => {console.log('位置', res)res.list.forEach(item => {markers.push({longitude: item.location.coordinates[0],latitude: item.location.coordinates[1]})})// 地圖上的標(biāo)記點(diǎn)this.setData({markers})})}})}})


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!

「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: