WeChatを通じて位置情報を取得し、サーバーに保存して利用します

*文
リリース: 2023-03-18 09:14:01
オリジナル
2247 人が閲覧しました

まず、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;
}
ログイン後にコピー


注: II は、I 関数と同様に、get または post によって渡された値を取得するカスタム メソッドです。

関連する推奨事項:

[コース] WeChat ミニプログラム開発ドキュメント

WeChat JS インターフェースの概要と詳細な使用法_Javascript スキル

WeChat パブリック アカウントの開発LBS

以上がWeChatを通じて位置情報を取得し、サーバーに保存して利用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート