zoukankan      html  css  js  c++  java
  • 通过微信获取当前地理位置,然后将其存到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 函数一样。

  • 相关阅读:
    VIJOS-P1340 拯救ice-cream(广搜+优先级队列)
    uva 11754 Code Feat
    uva11426 GCD Extreme(II)
    uvalive 4119 Always an Interger
    POJ 1442 Black Box 优先队列
    2014上海网络赛 HDU 5053 the Sum of Cube
    uvalive 4795 Paperweight
    uvalive 4589 Asteroids
    uvalive 4973 Ardenia
    DP——数字游戏
  • 原文地址:https://www.cnblogs.com/daxi-hu/p/7448175.html
Copyright © 2011-2022 走看看