微信定位功能結合百度地圖獲取用戶城市
阿新 • • 發佈:2018-03-28
ref hat ready conf tar 浮點 call ejs 事件
需要結合百度地圖的API,請先完成這篇文章的流程:《使用百度地圖將經緯度轉換成具體位置》
以vuejs為例
beforeMount () { var that = this; this.city = ‘正在定位城市...‘; this.wxapi.getWxConfig({ url: window.location.href.split(‘#‘)[0] }).then(_ => { if (+(_.returnCode) == 0) {// 初始化微信配置 wx.config(_.data); // 微信初始化事件 wx.ready(function(){ // 調用微信定位接口 wx.getLocation({ type: ‘wgs84‘, // 默認為wgs84的gps坐標,如果要返回直接給openLocation用的火星坐標,可傳入‘gcj02‘ success: function(res) { var latitude = res.latitude; // 緯度,浮點數,範圍為90 ~ -90 var longitude = res.longitude; // 經度,浮點數,範圍為180 ~ -180。 if (latitude && longitude) { window.getlocation = function(data) { Loader.hideAll(); if (data.status == 0) { var city = data.result.addressComponent.city Toast("定位到當前城市為:" + city); that.city = city this.$store.state.city = city } else { Toast(‘地址解析失敗,請手動選擇城市‘) that.$router.push(‘/cityselect‘) } } Loader.show(‘正在定位...‘); var o = document.createElement(‘script‘); o.src = `http://api.map.baidu.com/geocoder/v2/?callback=getlocation&location=${latitude},${longitude}&output=json&pois=1&ak=PaY0aQpuk5ypaxL1bGH4y65nbitEd0u3`; document.documentElement.childNodes[0].appendChild(o); } else { Toast(‘微信定位失敗,請手動選擇城市‘) that.$router.push(‘/cityselect‘) } } }); }); // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對於SPA可以在這裏更新簽名。 wx.error(function(res){ that.city = "定位失敗,請手動選擇城市"; Toasrt(‘微信接口調用失敗,請手動選擇城市‘) that.$router.push(‘/cityselect‘) }); } else { Toast("獲取微信配置失敗" + _.msg); that.city = "定位失敗,請手動選擇城市"; that.$router.push(‘/cityselect‘) } }) }
微信定位功能結合百度地圖獲取用戶城市