重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

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

时间:2020-09-16 06:00:11 作者:重庆seo小潘 来源:
首先,在静态页面中,添加微信的配置文件,通过js获

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