>  기사  >  위챗 애플릿  >  미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

王林
王林앞으로
2021-01-29 09:58:245313검색

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

사용자의 현재 위치를 얻는 세 가지 방법이 있습니다:

(동영상 공유 학습: 프로그래밍 입문)

1. wx.getLocation (주로 wx.openLocation과 함께 사용됨)

현재 정확도 가져오기 위도, 속도. 승인이 필요하지 않습니다. 유형이 gcj02로 설정되면 wx.openLocation에 사용할 수 있는 좌표가 반환됩니다

2, wx.chooseLocation

인증이 필요합니다. 지도를 열어 위치를 선택하세요

처음 메소드가 호출될 때 먼저 나타납니다. time

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

권한을 허용한 후 다시 나타납니다.

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

처음 허용되지 않으면 wx.chooseLocation의 실패 메소드가 항상 호출됩니다

3 wx.openLocation

이 필요합니다. 인증을 받고 WeChat에 내장된 지도를 사용하여 위치를 확인합니다. 주로 출발지부터 도착지까지의 경로를 확인하는데 사용됩니다

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

인증 방법은 3가지가 있습니다:

1, wx.getSetting

사용자의 현재 설정을 가져오고, 미니 프로그램에서 요청한 설정만 가져옵니다.

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

2.wx.openSetting

과 유사한 반환 값 Permissions에 미니 프로그램이 사용자에게 요청한 권한만 표시됩니다. 다음

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

3 과 유사한 설정 인터페이스, wx.authorize

는 사용자에게 사전에 인증 요청을 시작합니다. 호출이 이루어진 후 애플릿이 특정 기능을 사용하거나 사용자 데이터의 일부를 가져오는 데 동의하는지 여부를 즉시 사용자에게 묻는 팝업 창이 표시되지만 해당 인터페이스는 실제로 호출되지 않습니다. 사용자가 이전에 승인에 동의한 경우 팝업 창이 나타나지 않고 바로 성공이 반환됩니다. , 다음과 유사합니다

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?

wx.authorize가 나타나는 것입니다

문제는 wx.chooseLocation()을 사용하여 처음으로 권한을 얻었으나 거부된 다음 wx.getSetting( ) 다시 얻으려면 권한을 어떻게 해야 하나요?

아이디어: wx.chooseLocation()에는 실패 메소드가 있습니다. 첫 번째 거부 이후 지도를 선택하기 위한 후속 호출이 이를 트리거하면 실패 메소드에서 wx.getSetting()을 사용할 수 있습니다. 허가가 부여되었는지 여부.

1단계: 위치 지정 방법은 여러 번 사용될 수 있으므로 호출하기 쉽도록 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을 호출합니다. 다음 오류가 발생했습니다:

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?openSetting:fail은 사용자 TAP 제스처로만 호출할 수 있습니다.

하지만 2.2.4~2.3.1을 테스트할 때 위의 오류가 나타납니다.

2.3.2 이상에서는 이 문제가 발생하지 않습니다. . . . . . . .

그리고 2.0.8~2.2.3을 테스트하면 다음과 같은 오류가 나타납니다. . . . . .

미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요? 다른 사람들은 이런 문제가 없습니다. 이해가 안 돼요. . .

관련 추천:

미니 프로그램 개발 튜토리얼

위 내용은 미니 프로그램은 사용자의 현재 위치를 어떻게 얻나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제