由於須要在小程序加個定位並加載對應城市信息git
然而小程序自帶api目前只能獲取經緯度不能逆解析,雖然本身解析方式,可是同時也要調用地圖,難道用戶每次進小程序還要強行打開地圖選擇地址才定位嗎?多麻煩也不利於用戶體驗ajax
我就很少說什麼了,直接上代碼json
微信小程序獲取用戶定位信息並加載對應城市信息 wx.getLocation 騰訊地圖小程序api 微信小程序經緯度逆解析地理信息小程序
1 //加載騰訊位置服務js文件(必須)
//預加載內容 2 onLoad: function () { 3 4 //調用騰訊地圖sdk 添加騰訊地圖key 5 6 var demo = new qqmap({ 7 key: '*****-*****-*****-*****-SY7PH-SMFTK' 8 }); 9 10 //此聲明最好不要寫在 wx.getLocation方法內,this指代不一樣 11 12 var that = this; 13 wx.getLocation({ 14 type: 'gcj02', //編碼方式, 15 success: function (res) { 16 var latitude = res.latitude // wx.getLocation 獲取當前的地理位置、速度 latitude(維度) longitude(經度)
17 var longitude = res.longitude 18 demo.reverseGeocoder({
//騰訊地圖api 逆解析方法 首先設計經緯度 19 location: { 20 latitude: res.latitude, 21 longitude: res.longitude 22 },
//逆解析成功回調函數 23 success: function (res) { 24 getApp().globalData.cityname = res.result.address_component.city; //全局變量存放城市 res.result.address_component.city 獲取解析以後地址中的城市 33
console.log("onLoad");
//wx.request 發起網絡請求,相似於ajax
34 wx.request({ 35 url: 'https://www.xxxxxxxxxx.com/home/index/xcx_index', //填寫對應服務器地址 36 data: { 37 // cityid: getApp().globalData.cityid, //我這裏須要提交的參數,這裏我是把獲取的城市發給後臺,而後後臺給我對應城市的數據json文件 38 cityna: getApp().globalData.cityna, 39 district: res.result.address_component.city, 40 }, 41 header: { 42 "Content-Type": "applicatiSon/x-www-form-urlencoded" 43 }, 44 method: "POST", 45 success: function (res) { 46 console.log(res.data.data);
//解析回調函數獲得的json文件並一層一層的解析而後數據綁定到頁面上 47 that.setData({ 48 // 輪播圖圖片 49 imgurls: res.data.data.pics 58 }); 59 getApp().globalData.cityid = res.data.data.datacompany.cityid; 60 // this.data.pic_array_dq2[e.detail.value].name 61 } 62 });
· // 成功後提醒 63 wx.showModal({ 64 title: '定位成功', 65 content: '當前城市:' + getApp().globalData.cityname, 66 }); 67 68 }, 69 fail: function (res) {
//失敗的回調函數 70 // console.log(res); 71 }, 72 complete: function (res) {
//完成以後的回調函數,無論是否成功 73 console.log("逆解析狀態碼:"+res.status); //res.status 獲取狀態碼,爲0表明解析成功,可是咱們要考慮失敗的兼容,可能用戶並不肯意贊成獲取地理位置,因此不爲0 的時候也要加載內容給個默認地址 74 if (res.status!=0){ 75 wx.request({ 76 url: 'https://www.cyzs97.com/home/index/xcx_index', 77 data: { 78 // cityid: getApp().globalData.cityid, 79 cityna: getApp().globalData.cityna, 80 district:"", 81 }, 82 header: { 83 "Content-Type": "applicatiSon/x-www-form-urlencoded" 84 }, 85 method: "POST", 86 success: function (res) { 87 console.log(res.data.data); 88 that.setData({ 89 // 輪播圖圖片 90 imgurls: res.data.data.pics, 99 }); 100 getApp().globalData.cityid = res.data.data.datacompany.cityid; 101 // this.data.pic_array_dq2[e.detail.value].name 102 } 103 });
//提示用戶失敗可開啓定位服務 104 wx.showModal({ 105 title: '定位失敗', 106 content: '定位失敗,未受權獲取當前位置或服務錯誤' , 107 }); 108 } 109 console.log("定位獲取的:" + getApp().globalData.cityname); 110 } 111 }); 112 } 113 }); 114 115 },
固然最重要的不能忘記,須要配置服務器,只需安全域名設置,須要在微信公衆平臺添加域名地址 https://apis.map.qq.com微信小程序