1. 程式人生 > >微信定位功能結合百度地圖獲取用戶城市

微信定位功能結合百度地圖獲取用戶城市

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‘) } }) }

微信定位功能結合百度地圖獲取用戶城市