站内搜索

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

首先,在静态页面中,添加微信的配置文件,通过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中的详细内容,更多请关注php中文网其它相关文章!

  • 上一篇:微信公众号中个性化菜单的开发实例
  • 下一篇:使用EasyWechat快速开发微信公众号支付