ホームページ  >  記事  >  WeChat アプレット  >  ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

王林
王林転載
2021-01-29 09:58:245314ブラウズ

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

ユーザーの現在位置を取得するには 3 つの方法があります:

(学習ビデオ共有: プログラミング入門 )

1. wx.getLocation (主に wx.openLocation と一緒に使用されます)

現在の精度、緯度、速度を取得します。許可は必要ありません。 type が gcj02 に設定されている場合、wx.openLocation

2 に使用できる座標を返します。wx.chooseLocation

#承認が必要です。マップを開いて場所を選択します

初めてメソッドを呼び出すときは

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

が表示され、権限が許可されると

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

が表示されます。初回は許可されず、wx は継続的に呼び出されます。chooseLocation

3、wx.openLocation

の失敗メソッドは承認を必要とし、WeChat の組み込みマップを使用して位置を表示します。主に始点から終点までのルートを確認するために使用されます。

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

認可方法は

1、wx.getSetting

# の 3 つがあります。 ##ユーザーを取得します。現在の設定、アプレットがユーザーに要求したアクセス許可のみが、次の

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

#2,wx のような戻り値に表示されます。 openSetting

権限設定選択インターフェイスを呼び出します。次の

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか? のような、ミニ プログラムがユーザーに要求した権限のみが設定インターフェイスに表示されます。

3, wx.authorize

事前にユーザーへの認可リクエストを開始します。呼び出しが行われると、ポップアップ ウィンドウがすぐにユーザーに、アプレットによる特定の機能の使用またはユーザー データの一部の取得を許可するかどうかを尋ねますが、対応するインターフェイスは実際には呼び出されません。ユーザーが以前に承認に同意していた場合、ポップアップ ウィンドウは表示されず、成功が直接返されます。 、次のようなものです。

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

wx.authorize が表示されるのは次のとおりです。

質問は次のとおりです。初めて wx.chooseLocation() を使用して、アクセス許可が拒否され、wx.getSetting() を使用してアクセス許可を回復した場合はどうすればよいですか?

アイデア: wx.chooseLocation() には、fail メソッドがあります。最初の拒否の後、マップを選択するための後続の呼び出しによってこれがトリガーされる場合は、次のように、fail メソッドで wx.getSetting() を使用できます。許可が与えられているかどうかを毎回確認できます。

最初のステップ: 位置決めメソッドは複数回使用される可能性があるため、呼び出しを容易にするために位置決めメソッドを App.js に書きました

App({
    //获取用户地理位置权限
    getPermission:function(obj){
      wx.chooseLocation({
        success: function (res) {    
            obj.setData({
                addr: res.address      //调用成功直接设置地址
            })                
        },
        fail:function(){
            wx.getSetting({
                success: function (res) {
                    var statu = res.authSetting;
                    if (!statu['scope.userLocation']) {
                        wx.showModal({
                            title: '是否授权当前位置',
                            content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
                            success: function (tip) {
                                if (tip.confirm) {
                                    wx.openSetting({
                                        success: function (data) {
                                            if (data.authSetting["scope.userLocation"] === true) {
                                                wx.showToast({
                                                    title: '授权成功',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                                //授权成功之后,再调用chooseLocation选择地方
                                                wx.chooseLocation({
                                                    success: function(res) {
                                                        obj.setData({
                                                            addr: res.address
                                                        })
                                                    },
                                                })
                                            } else {
                                                wx.showToast({
                                                    title: '授权失败',
                                                    icon: 'success',
                                                    duration: 1000
                                                })
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                },
                fail: function (res) {
                    wx.showToast({
                        title: '调用授权窗口失败',
                        icon: 'success',
                        duration: 1000
                    })
                }
            })
        }
    })        
   },})

2 番目のステップ: 必要に応じて位置決めメソッドを取得しますアドレス ページ内:

var app = getApp();
Page({
   data:{
        addr:'请选择位置'         
    },
    //选择获取地理位置
    getAddress:function(){
          var that=this;
      app.getPermission(that);    //传入that值可以在app.js页面直接设置内容        }, 
})

最終レンダリング:

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?

携帯電話で取得された最終的な位置偏差はそれほど大きくありません。

wx.openSetting の更新に関する注意事項。

バージョン 2.3.0 以降、ユーザーはクリックした後でのみ設定ページにジャンプして認証情報を管理できます。

つまり、バージョン 2.3.0 以降では、wx.showModal を渡しました。上記のコールバック関数が wx.openSetting を呼び出すと、次のエラーが発生します。テスト済み 2.2 上記のエラーは、.4 から 2.3.1 まで発生します。

2.3.2 以降では、この問題は発生しません。 。 。 。 。 。 。 。

ミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?そして、2.0.8 から 2.2.3 をテストすると、次のエラーが表示されます。 。 。 。 。 。

この問題が発生していない人もいます。分かりません。 。 。

関連する推奨事項:

ミニ プログラム開発チュートリアル

以上がミニ プログラムはどのようにしてユーザーの現在位置を取得するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。