微信小程序正确的异步request请求,根据经纬度获取地理位置信息

Posted chengg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序正确的异步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,其他的百度大佬的博客。

 

以上是关于微信小程序正确的异步request请求,根据经纬度获取地理位置信息的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序异步请求问题

微信小程序异步请求问题

微信小程序使用Promise 实现对wx.request()请求封装

微信小程序wx.request的回调使用

微信小程序使用wx.request发送multipart/form-data请求的方法

微信小程序自动定位,通过百度地图根据经纬度获取该地点所在城市信息