微信小程序正确的异步request请求,根据经纬度获取地理位置信息
生活随笔
收集整理的這篇文章主要介紹了
微信小程序正确的异步request请求,根据经纬度获取地理位置信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
微信小程序的所有request請求都是異步的,不支持同步。但是在請求時可能會耗費一定時間,這樣的話在獲取返回數據時可能方法還沒有執行完就已經進行賦值操作了。我遇到的就是拿到的數據為undefined。
解決辦法,使用回調函數,等操作完成后再更改原來的值。
貼代碼:(這是根據經緯度獲取地理位置的一個方法)
function GetAddress(latitude, longtitude, callback, errorCallback) {var geturl = 'https://api.map.baidu.com/geocoder/v2/?ak=自己去申請后替換&location=' + latitude + ',' + longtitude + '&output=json'wx.request({url: geturl,method: 'GET',header: {'content-type': 'application/json'},success: function (res) {//json處理var jsonStr=JSON.stringify(res.data)jsonStr = jsonStr.replace(/[\\]/g, '')jsonStr = jsonStr.substring(jsonStr.indexOf('(') + 1, jsonStr.indexOf(')'))var json=JSON.parse(jsonStr)if (typeof callback == "function")callback(json.result.formatted_address)},fail: function () {if (typeof errorCallback == "function")errorCallback("獲取失敗")}}) }因為返回的json格式有點問題,我進行了處理在轉成Json的。這個用的是百度地圖的api來獲取,鏈接里面的AK參數就appkey,需要去百度地圖官網的控制臺申請,http://lbsyun.baidu.com/apiconsole/key。
下面的是調用
var s = com.GetAddress(23.10229, 113.3345211,function (data) {console.log(data);}, function (data) {console.error(data);})小程序模塊的引用就不多說了。
這個是接口返回的json
renderReverse&&renderReverse({"status":0,"result":{"location":{"lng":113.33452109999998,"lat":23.102290010605964},"formatted_address":"廣東省廣州市海珠區新港中路479","business":"新港,赤崗,客村","addressComponent":{"country":"中國","country_code":0,"country_code_iso":"CHN","country_code_iso2":"CN","province":"廣東省","city":"廣州市","city_level":2,"district":"海珠區","town":"","adcode":"440105","street":"新港中路","street_number":"479","direction":"附近","distance":"2"},"pois":[],"roads":[],"poiRegions":[],"sematic_description":"710鮮果附近12米","cityCode":257}})?
?
方法是直接就可以用的,關于回調,單個的異步請求可以用回調函數,多個異步操作需要用promise,其他的百度大佬的博客。
?
轉載于:https://www.cnblogs.com/FollowWinds/p/8335016.html
總結
以上是生活随笔為你收集整理的微信小程序正确的异步request请求,根据经纬度获取地理位置信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云闪付收款要手续费吗
- 下一篇: Altium Designer导入pcb