zoukankan      html  css  js  c++  java
  • 微信小程序正确的异步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,其他的百度大佬的博客。

  • 相关阅读:
    Linux-3.14.12内存管理笔记【构建内存管理框架(3)】
    Linux-3.14.12内存管理笔记【构建内存管理框架(2)】
    Linux-3.14.12内存管理笔记【构建内存管理框架(1)】
    Linux-3.14.12内存管理笔记【建立内核页表(3)
    Linux power supply class(1)_软件架构及API汇整【转】
    Linux-3.14.12内存管理笔记【建立内核页表(2)】-低端内存的建立
    Linux-3.14.12内存管理笔记【建立内核页表(1)】
    linux防火墙相关 iptables
    shell 备份 source code
    crontab清理日志
  • 原文地址:https://www.cnblogs.com/FollowWinds/p/8335016.html
Copyright © 2011-2022 走看看