微信获取当前地理位置存入 session 方法解析

why 60 2024-10-14

首先,在静态页面中,添加微信的配置文件,通过js获取。

微信获取当前地理位置存入 session 方法全解析

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

<script type="text/javascript">

  wx.config({

    debug: false,

    appId: &#39;{$signPackage.appId}&#39;,

    timestamp: &#39;{$signPackage.timestamp}&#39;,

    nonceStr: &#39;{$signPackage.nonceStr}&#39;,

    signature: &#39;{$signPackage.signature}&#39;,

    jsApiList: [

      // 所有要调用的 API 都要加到这个列表中

      &#39;checkJsApi&#39;,

      &#39;openLocation&#39;,

       &#39;getLocation&#39;,

       &#39;scanQRCode&#39;

    ]

  });

  wx.ready(function () {

    $(&#39;#scan&#39;).click(function(){

      wx.scanQRCode({

        needResult: 0,

         });

       });

    wx.checkJsApi({

       jsApiList: [

         &#39;getLocation&#39;

      ],

      success: function (res) {

        if (res.checkResult.getLocation == false)

        {

          alert(&#39;你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!&#39;);

           return;

        }

      }

    });

    wx.getLocation({

      success: function (res) {

           var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90

        var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。

        var geoconv = &#39;http://api.map.baidu.com/geoconv/v1/?callback=coordinateTransformation&coords=&#39; + longitude + &#39;,&#39; + latitude + &#39;&from=1&to=5&ak=5BFNbSgnVF5g2O72NpvTDxFm&#39;;

        var script = document.createElement(&#39;script&#39;);

        script.src = geoconv;

        document.head.appendChild(script);

       },

      cancel: function (res) {

        alert(&#39;用户拒绝授权获取地理位置&#39;);

         }

     });

  });

  function coordinateTransformation(data)

  {

    var LATLNG = data.result[0].y + &#39;,&#39; + data.result[0].x;

    var url = &#39;http://api.map.baidu.com/geocoder/v2/?callback=getCurrentLocation&ak=5BFNbSgnVF5g2O72NpvTDxFm&location=&#39; + LATLNG + &#39;&output=json&pois=1&#39;;

    var script = document.createElement(&#39;script&#39;);

    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 = &#39;street=&#39; + address + &#39;&name=&#39; + street + &#39;&lng=&#39; + x + &#39;&lat=&#39; + y + &#39;&city=&#39; + city;

      var url = "{:U(&#39;Index/savePosition&#39;)}";

       $.getJSON(url,{&#39;name&#39;:street,&#39;lng&#39;:x,&#39;lat&#39;: y,&#39;city&#39;:city},function(data)

       {

         if(data.returnCode) { }

      });

     }

   }

</script>

其次,在控制器中接收ajax传递的地理坐标,然后保存到session中。

public function savePosition()    {      

$city   = II(&#39;get.city&#39;,&#39;&#39;,&#39;trim&#39;);      

$addr = II(&#39;get.name&#39;,&#39;&#39;,&#39;trim&#39;);      

$lng   = II(&#39;get.lng&#39;,&#39;&#39;,&#39;trim&#39;);      

$lat    = II(&#39;get.lat&#39;,&#39;&#39;,&#39;trim&#39;);      

$myLocation = array(                

    &#39;city&#39;   =>$city,                

    &#39;addr&#39; =>$addr,                

    &#39;lng&#39;   =>$lng,               

    &#39;lat&#39;   =>$lat,      );

  $_SESSION[&#39;MyLocation&#39;] = $myLocation;

          $data[&#39;returnCode&#39;]  = 1;          

          $data[&#39;returnInfo&#39;]  = &#39;获取位置成功!&#39;;          

          $this->ajaxReturn($data);         

           return;   

           }

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:EasyWechat 助力微信公众号支付快速开发详解
下一篇:微信小程序实现登录获取 unionid 方法图文全解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~