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

  • 相关阅读:
    SQL条件的顺序对性能的影响
    在客户端通过外部表访问Trace文件的内容
    Vue 数据持久化
    .Net 垃圾回收机制原理(一)
    密码管理工具KeePass
    SQL Server附加数据库 5123
    网页编码就是那点事
    你真想到了50岁还靠编程来养家糊口吗?
    技术敏感度 — 基层技术管理者必备
    虚拟化、云计算
  • 原文地址:https://www.cnblogs.com/daxi-hu/p/7448175.html
Copyright © 2020-2023  润新知