検索
ホームページWeChat アプレットミニプログラム開発WeChat アプレットの例: 現在の都市の位置を取得し、地理的位置を再認証するためのコード実装

この記事では、WeChat アプレットの例を紹介します。現在の都市の位置を取得し、地理的位置を再認証するコードの実装です。必要な友人が参考になれば幸いです。 。

1. 現在の地理的位置を取得するには、wx.getLocation インターフェイスを使用して経度、緯度、速度、その他の情報を返すことができます。

注: そのデフォルトの動作メカニズム:

最初のページにアクセスしてください。時刻に API を呼び出し、ユーザー認証結果を返し、その結果を保持します。ユーザーがミニ プログラムを削除したり、承認ステータスを変更しない限り、ユーザーが再度ページに入っても、承認結果は変更されず、API は再度呼び出されません。

削除せずに再度承認リクエストを開始し続けます。ミニ プログラムには wx.openSetting の使用が必要です。

したがって、最初のステップは、wx.openSetting を取得することです

2. 2 番目のステップは、wx.getLocation インターフェイスを通じて経度、緯度、速度などの情報を返すことです

3。経度と緯度を地理に変換します。位置については、Tencent 位置情報サービスの WeChat アプレット用地理変換 JS SDK の API または Baidu API (私が使用している Baidu API) を使用できます

ユーザーが初めてページにアクセスしたとき(地理的位置の認証が必要です)、ページ上で onShow を実行します。このとき、wx.getLocation を呼び出してユーザーに認証を求めます。今後ページに入るたびに、特定のユーザー認証情報が wx.getSetting インターフェイスを通じて返されます。

コードは次のとおりです:

onShow: function () {
    var _this = this;
    //调用定位方法
    _this.getUserLocation();
  },
//定位方法
getUserLocation: function () {
    var _this = this;
    wx.getSetting({
      success: (res) => {
        // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
        // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
        // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
        if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
          //未授权
          wx.showModal({
            title: '请求授权当前位置',
            content: '需要获取您的地理位置,请确认授权',
            success: function (res) {
              if (res.cancel) {
                //取消授权
                wx.showToast({
                  title: '拒绝授权',
                  icon: 'none',
                  duration: 1000
                })
              } else if (res.confirm) {
                //确定授权,通过wx.openSetting发起授权请求
                wx.openSetting({
                  success: function (res) {
                    if (res.authSetting["scope.userLocation"] == true) {
                      wx.showToast({
                        title: '授权成功',
                        icon: 'success',
                        duration: 1000
                      })
                      //再次授权,调用wx.getLocation的API
                      _this.geo();
                    } else {
                      wx.showToast({
                        title: '授权失败',
                        icon: 'none',
                        duration: 1000
                      })
                    }
                  }
                })
              }
            }
          })
        } else if (res.authSetting['scope.userLocation'] == undefined) {
         //用户首次进入页面,调用wx.getLocation的API
          _this.geo();
        }
        else {
          console.log('授权成功')
          //调用wx.getLocation的API
          _this.geo();
        }
      }
    })

  },         

// 获取定位城市
  geo: function () {
    var _this = this;
    wx.getLocation({
      type: 'wgs84',
      success: function (res) {
        var latitude = res.latitude
        var longitude = res.longitude
        var speed = res.speed
        var accuracy = res.accuracy
        wx.request({
          url: 'http://api.map.baidu.com/geocoder/v2/?ak=xxxxxxxxxxxx&location=' + res.latitude + ',' + res.longitude + '&output=json',
          data: {},
          header: { 'Content-Type': 'application/json' },
          success: function (ops) {
            console.log('定位城市:', ops.data.result.addressComponent.city)
          },
          fail: function (resq) {
            wx.showModal({
              title: '信息提示',
              content: '请求失败',
              showCancel: false,
              confirmColor: '#f37938'
            });
          },
          complete: function () {
          }
        })
      }
    })
  },

レンダリング: 初めてページに入った後

、承認を拒否した後、再度ページに入るか、ページ上のボタンをクリック(場所を取得)してバインドしますJS

上記 2 つのポップアップ ボックスの構造は同じです。前者は wx.getLocation インターフェイスによって提供されるスタイルを使用し、後者は wx.showModel インターフェイスによって提供されるスタイルを使用します。

承認の原則について簡単に説明します。初めてページに入るとき、onshow は wx.getLocation を呼び出してユーザーに承認を求めます。ユーザーが拒否して再度ページに入った後、 wx.getSetting インターフェイス。

res.authSetting['scope.userLocation'] の値は true と比較され、true の場合は認可が許可され、false の場合は認可が拒否されます。

関連する推奨事項:

setData を使用して配列内の特定の値を変更するアプレットの実装

アプレットは、プレビュー画像を選択し、長押しして画像を削除するコードを実装します

WeChat アプレット- - Raspberry Pi 車制御コードフロー


以上がWeChat アプレットの例: 現在の都市の位置を取得し、地理的位置を再認証するためのコード実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません