作者:花罰,來(lái)自原文地址原理當(dāng)前百度和高德周邊查詢api的實(shí)現(xiàn)機(jī)制基本一致,都是使用request接口請(qǐng)求遠(yuǎn)程https接口,然后返回參數(shù)中位置的某種類型的周邊信息,最后再把數(shù)據(jù)動(dòng)態(tài)綁定到頁(yè)面。本文使用百度小程序接 ...
當(dāng)前百度和高德周邊查詢api的實(shí)現(xiàn)機(jī)制基本一致,都是使用request接口請(qǐng)求遠(yuǎn)程https接口,然后返回參數(shù)中位置的某種類型的周邊信息,最后再把數(shù)據(jù)動(dòng)態(tài)綁定到頁(yè)面。本文使用百度小程序接口進(jìn)行實(shí)現(xiàn)。
微信小程序創(chuàng)建地圖容器相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,只需要一個(gè)map組件即可,下面代碼將完成地圖容器的創(chuàng)建:
- wxml代碼
map組件簡(jiǎn)介
map組件默認(rèn)使用騰訊地圖,只要在wxml中書(shū)寫(xiě)
上面的代碼已經(jīng)可以正常的創(chuàng)建地圖容器了,但是所創(chuàng)建的地圖大小不夠,所以我們需要給map組件配上style屬性,style屬性是wxml中幾乎所有組件均支持的屬性,主要用于給主鍵配置顯示效果。以下地圖全屏代碼同時(shí)適用于wxml的其他組件: - 在map組件上加上style
wx.getSystemInfo
進(jìn)行獲取系統(tǒng)的高度,然后再動(dòng)態(tài)綁定到map組件上。js代碼如下:var bmap = require('../../utils/bmap-wx.js')
引入api注:在開(kāi)始使用該api之前,我們還需要去百度地圖上獲取一個(gè)微信小程序?qū)S玫膋ey,在獲取這個(gè)key的時(shí)候需要輸入目標(biāo)小程序的appid。
BMap.search
接口是用于獲取周邊信息的接口,官方描述為:查找并展示定位地點(diǎn)周邊的POI信息,很快知道“我周圍有什么”。默認(rèn)返回生活服務(wù)、美食、酒店三種類型的POI。
首先,我們來(lái)看一個(gè)BMap.search
的使用案例:
從上面代碼中可以看出我們?yōu)榱耸褂迷摻涌冢陧?yè)面數(shù)據(jù)中加入了三個(gè)數(shù)據(jù):latitude、longitude和markers,分別用于保存當(dāng)前poi位置和周邊信息的標(biāo)記。還有看到我們?cè)谠趐age外申明了兩個(gè)變量,bmap和wxMarkerData, 分別保存當(dāng)前頁(yè)面的api入口,poi接口返回?cái)?shù)據(jù)。由于頁(yè)面增加數(shù)據(jù)了,所以對(duì)應(yīng)的頁(yè)面也需要做出相應(yīng)的變化,需要對(duì)map組件進(jìn)行簡(jiǎn)單的修改:
同時(shí)添加了兩個(gè)簡(jiǎn)單的wxss,這個(gè)wxss是給地圖腳下增加的一個(gè)簡(jiǎn)單的導(dǎo)航樣式
以上就完成了一個(gè)簡(jiǎn)單的地圖周邊組件,優(yōu)化一下顯示效果就差不多可以用了。當(dāng)前還有一個(gè)問(wèn)題就是百度api的bug問(wèn)題,該bug如果不進(jìn)行修復(fù),那么將一直只能查詢當(dāng)前地址的周邊信息,另外我查看了高德地圖的poi周邊接口,該接口就直接不提供指定位置的周邊信息查詢。