如何通过微信获取当前地理位置并将其存到session中

互联网 17-9-14
首先,在静态页面中,添加微信的配置文件,通过js获取。
<script type="text/javascript">    wx.config({      debug: false,      appId: '{$signPackage.appId}',      timestamp: '{$signPackage.timestamp}',      nonceStr: '{$signPackage.nonceStr}',      signature: '{$signPackage.signature}',      jsApiList: [        // 所有要调用的 API 都要加到这个列表中        'checkJsApi',        'openLocation',         'getLocation',         'scanQRCode'      ]    });    wx.ready(function () {      $('#scan').click(function(){        wx.scanQRCode({          needResult: 0,           });         });      wx.checkJsApi({         jsApiList: [           'getLocation'        ],        success: function (res) {          if (res.checkResult.getLocation == false)          {            alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');             return;          }        }      });      wx.getLocation({        success: function (res) {             var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90          var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。          var geoconv = 'http://api.map.baidu.com/geoconv/v1/?callback=coordinateTransformation&coords=' + longitude + ',' + latitude + '&from=1&to=5&ak=5BFNbSgnVF5g2O72NpvTDxFm';          var script = document.createElement('script');          script.src = geoconv;          document.head.appendChild(script);         },        cancel: function (res) {          alert('用户拒绝授权获取地理位置');           }       });    });    function coordinateTransformation(data)    {      var LATLNG = data.result[0].y + ',' + data.result[0].x;      var url = 'http://api.map.baidu.com/geocoder/v2/?callback=getCurrentLocation&ak=5BFNbSgnVF5g2O72NpvTDxFm&location=' + LATLNG + '&output=json&pois=1';      var script = document.createElement('script');      script.src = url;      document.head.appendChild(script);     }    function getCurrentLocation(data)    {      if(data.status === 0)       {        var address = data.result.formatted_address,        x = data.result.location.lng,           y = data.result.location.lat,        city = data.result.addressComponent.city,        street = data.result.addressComponent.street || data.result.formatted_address,        reqData = 'street=' + address + '&name=' + street + '&lng=' + x + '&lat=' + y + '&city=' + city;        var url = "{:U('Index/savePosition')}";         $.getJSON(url,{'name':street,'lng':x,'lat': y,'city':city},function(data)         {           if(data.returnCode) { }        });       }     }  </script>  其次,在控制器中接收ajax传递的地理坐标,然后保存到session中。  public function savePosition()    {        $city   = II('get.city','','trim');        $addr = II('get.name','','trim');        $lng   = II('get.lng','','trim');        $lat    = II('get.lat','','trim');        $myLocation = array(                      'city'   =>$city,                      'addr' =>$addr,                      'lng'   =>$lng,                     'lat'   =>$lat,      );    $_SESSION['MyLocation'] = $myLocation;            $data['returnCode']  = 1;                      $data['returnInfo']  = '获取位置成功!';                      $this->ajaxReturn($data);                      return;                 }

注:用的是thinkphp框架,II是自定义的方法,获取get或post传递的值,和 I 函数一样。

以上就是如何通过微信获取当前地理位置并将其存到session中的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 获取
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:微信公众号中个性化菜单的开发实例

相关资讯