前言
最近在搗騰小程式,想開發一個自己的小程式,過一把獨立開發的癮。
自己設計,自己搞資料,自己找圖示,自己決定要或者不要什麼功能,完全跟著心走,目前體驗下來,感覺還是蠻爽的。比在公司產品要你做什麼你就得做什麼舒服多了,巴適的很(假裝自己是四川人),哈哈
雖然我是一個App開發,但我還是蠻注重使用者體驗的,我會去考慮應用的使用場景,使用習慣,不斷的去調整,去優化。這次開發的小程式,從配色、圖示選擇、UI設計,到頁面結構、功能等都花了很多心思。歡迎體驗,吐槽。
呀!一不小心扯遠了,迴歸主題!
小程式地圖SDK原理
微信小程式開發,可以使用地圖元件map
,來進行地圖顯示、定位、顯示大頭針等基本功能,具體可以看官方文件:微信小程式map元件。
map
元件只提供一些基本的“硬體
”,還需要“大腦
”來驅動這些“硬體
”。這個“大腦
”就是騰訊地圖、百度地圖和高德地圖提供的小程式SDK。其實這些SDK只是提供了一些網路請求介面,請求這些介面,能獲得對應結構的網路資料,再驅動map
元件來渲染。
比如線路規劃:從A到B,只要確定起點經緯度和終點經緯度,傳給SDK,SDK裡就會發起網路請求,獲得最佳路線,返回給你從A到B所途經的轉折點經緯度陣列,你把得到的經緯度陣列傳給map
元件,map
就能繪製路線。
高德SDK介面列表
高德地圖提供的介面有:
方法 | 用途 |
---|---|
getPoiAround(Object) | 獲取周邊的POI。 querykeywords、location、querytypes 欄位於 1.1.0 版本新增。 |
getRegeo(Object) | 獲取地址描述資訊。 location 欄位於 1.1.0 版本新增。 |
getWeather(Object) | 獲取天氣情況(實時和預報)。type、city欄位於 1.1.0 版本新增。 |
getStaticmap(Object) | 獲取靜態的地圖圖片。 getStaticmap(Object) 方法於 1.1.0 版本新增。 |
getInputtips(Object) | 獲取提示詞。 getInputtips(Object) 方法於 1.2.0 版本新增。 |
getDrivingRoute(Object) | 獲取駕車路線。 getDrivingRoute(Object) 方法於 1.2.0 版本新增。 |
getWalkingRoute(Object) | 獲取步行路線。 getWalkingRoute(Object) 方法於 1.2.0 版本新增。 |
getTransitRoute(Object) | 獲取公交路線。 getTransitRoute(Object) 方法於 1.2.0 版本新增。 |
getRidingRoute(Object) | 獲取騎行路線。 getRidingRoute(Object) 方法於 1.2.0 版本新增。 |
具體介面用法,參考高德官方文件: AMapWX基本方法
接入SDK:
**首先:**下載SDK下載地址
下載完後,直接將amap-wx.js
檔案拖到工程libs目錄下,這個目錄隨便建的,一定要放到miniprogram
資料夾內,任何位置都可以,不然找不到。如圖:
引用: 1.在js檔案開頭引入並宣告SDK物件
2.把不相關程式碼刪掉後,獲得高德當前位置天氣情況,大概就是這樣子的:
// miniprogram/pages/home/home.js
var amapFile = require('../../libs/amap-wx.js');
Page({
/**
* 頁面的初始資料
* 本地圖:"../../images/hz_metro_map.png"
* 網路圖:
*/
data: {
weatherInfo: null,
},
/**
* 生命週期函式--監聽頁面顯示
*/
onShow: function() {
this._getWeather();
},
/**
* 獲取天氣資訊
*/
_getWeather: function() {
var that = this;
var myAmapFun = new amapFile.AMapWX({ key: '高德地圖key' });
myAmapFun.getWeather({
success: function (data) {
//成功回撥
console.log(data)
},
fail: function (info) {
//失敗回撥
console.log(info)
}
})
}
})
複製程式碼
這樣就拿到了高德的資料,超級簡單有木有。
遇到的坑
雖然很簡單,但是使用起來,還是發現有坑。使用getPoiAround
介面時,發現沒有分頁功能。其實高德服務度介面是有分頁功能的,但是小程式SDK裡並沒有把page
引數暴露出來,坑啊。我使用的SDK版本是:sdkversion: "1.2.0"
解決辦法:在amap-wx.js
檔案裡,找到getPoiAround
介面,往引數裡新增一個page
欄位即可,如下圖:
這樣就能正常分頁了。
到此就說完了,也就那麼回事。
歡迎掃上面小程式碼,體驗我的小程式,多多吐槽,我將繼續優化。謝謝!