最近剛開始接觸微信小程序,在弄懂其結構以及相關接口之后,准備着手實現一個小程序,功能包括--獲取用戶當前位置的經緯度,在地圖上查看位置,通過地圖獲取不同位置的經緯度。
- 微信小程序的主體部分包括:
app.js:必填,小程序邏輯,由js代碼寫成;
app.json:必填,小程序公共設置,頁面配置、滾動條、標題的顯示等等;
app.wxss:非必填,公共樣式表,即css;
app.wxml:非必填,模板文件。
新增頁面需要在app.json進行配置:
"pages":[
"pages/index/index",
"pages/location/location",
"pages/logs/logs"
]
- 通過在視圖層調用bindtap與邏輯層中的方法匹配--實現頁面跳轉:
視圖層
<view class="location" bindtap="locationViewTap"> <button>獲取用戶當前位置</button> </view>
邏輯層
locationViewTap: function(){
wx.navigateTo({
url: '../location/location'
})
}
- 通過在視圖層調用bindtap與邏輯層中的方法匹配--實現方法調用:
視圖層
<button bindtap="mapViewTap" style="margin:10px">查看地圖</button> <button bindtap="chooseMapViewTap" style="margin:10px">選擇位置</button>
邏輯層
mapViewTap:function(){
wx.getLocation({
type: 'gcj02', //返回可以用於wx.openLocation的經緯度
success: function(res) {
console.log(res)
wx.openLocation({
latitude: res.latitude,
longitude: res.longitude,
scale: 28
})
}
})
}
- 有關地圖位置的三個接口:
(1) wx.getLocation(OBJECT) 獲取當前的地理位置、速度
success返回參數:
| latitude | 緯度,浮點數,范圍為-90~90,負數表示南緯 |
| longitude | 經度,浮點數,范圍為-180~180,負數表示西經 |
| speed | 速度,浮點數,單位m/s |
| accuracy | 位置的精確度 |
(2) wx.openLocation(OBJECT) 使用微信內置地圖查看位置
OBJECT參數說明:
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
| latitude | Float | 是 | 緯度,范圍為-90~90,負數表示南緯 |
| longitude | Float | 是 | 經度,范圍為-180~180,負數表示西經 |
| scale | INT | 否 | 縮放比例,范圍5~18,默認為18 |
| name | String | 否 | 位置名 |
| address | String | 否 | 地址的詳細說明 |
| success | Function | 否 | 接口調用成功的回調函數 |
| fail | Function | 否 | 接口調用失敗的回調函數 |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
(3) wx.chooseLocation(OBJECT) 打開地圖選擇位置
success返回參數:
| name | 位置名稱 |
| address | 詳細地址 |
| latitude | 緯度,浮點數,范圍為-90~90,負數表示南緯 |
| longitude | 經度,浮點數,范圍為-180~180,負數表示西經 |
- 實現效果
利用getLocation獲取當前位置的經緯度坐標
openLocation打開微信內置地圖查看
利用chooseLocation選取位置,並將位置信息的經緯度實時響應顯示
實時顯示經緯度:

注意事項:
(1) 利用getLocation()獲得的地圖參數信息只有兩個

利用chooselocation返回的參數如下:

(2) this.setData修改json里面的值
邏輯層中的json數據可以通過WXML文件{{json}}顯示出來:

