>백엔드 개발 >PHP 튜토리얼 >위챗을 통해 위치정보를 획득하고 서버에 저장하여 활용

위챗을 통해 위치정보를 획득하고 서버에 저장하여 활용

*文
*文원래의
2017-12-22 15:51:342287검색

먼저 페이지에 WeChat 구성 파일을 추가하고 js를 통해 가져옵니다.

<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가 전달한 지리좌표를 컨트롤러에서 받아 세션에 저장합니다.

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는 I 함수와 마찬가지로 get 또는 post로 전달된 값을 가져오는 사용자 정의 방법입니다.

관련 추천:

[강좌] WeChat Mini 프로그램 개발 문서

WeChat JS 인터페이스 요약 및 세부 사용법_Javascript 기술

WeChat 공용 계정 개발 L BS

위 내용은 위챗을 통해 위치정보를 획득하고 서버에 저장하여 활용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.