1

나는 Phonegap 빌드 0.3.0을 사용하여 빌드 버전 3.4.0을 사용하고 있습니다.
내 앱은 사용자 위치를지도에 표시해야합니다.Phonegap Android에서 Geolocation

이것은 iOS에서 매우 잘 작동합니다.
하지만 Android의 위치 설정에 따라 결과가 달라집니다.

나는 enableHighAccuracy: false와 빠른 위치 수정을 얻기 위해 노력하고 있어요 경우 사용자는 무선 위치 액세스이 내 오류 콜백이 오류 코드 2로 호출됩니다 사용할 수있다. 이것이 내가 기대했던 것입니다.

enableHighAccuracy: true으로 가장 좋은 결과를 얻으려는 경우 사용자가 GPS 액세스을 사용 중지하면 오류 콜백이 호출되지 않습니다. 대신 그것은 단지 시간을 초과합니다.

이 알려진 동작이며 살아야합니까, 아니면 내가 할 수있는 것이 있습니까?

내가 상용구 코드를 사용하고 있습니다 :

var positionOptions = { 
    enableHighAccuracy: true, 
    timeout: 1000*30, 
    maximumAge: 0 
}; 

function positionSuccess(location) { 
    console.log(location); 
}; 

function positionError(error) { 
    console.log(error); 
}; 

navigator.geolocation.getCurrentPosition(
    positionSuccess, 
    positionError, 
    positionOptions 
); 

편집 :이 화웨이/안드로이드 4.0.3에서 테스트, 모토 G/안드로이드 4.4.2/안드로이드 4.1.2 삼성 GT-I9100, LG ???/Android 4.1.2

답변

2

Cordova의 geolocation은 제대로 작동하려면 매우 까다로울 수 있습니다. 나는 아직도 가끔 혼자 힘으로 싸우고있다. 시간 초과가 발생하면 시간 제한을 ~ 300,000 ms (5 분)로 연장하여 Geolocation 코드가 테스트 장치와도 호환되는지 확인하십시오. 예, 신호가 나쁜 지역에 있다면 오래 걸릴 수 있습니다. 또한 Wi-Fi를 통해 내 위치를 확인해보십시오. 그리고 라이브 장치에서 테스트하십시오 (체크 아웃 TestDevice). 안드로이드 시뮬레이터는 불확실합니다.

Geolocation이 응용 프로그램에서 중요 할 경우 이러한 오류 코드가 발생할 때마다 사용자에게 경고해야합니다. 사용자에게 한 가지 액세스 또는 다른 액세스를 사용하도록 설정하고이를 수행하는 방법에 대해 설명합니다.

또한 enableHighAccuracy : false에서 getCurrentPosition을 실행하는 것을 고려할 수 있으며, 실패하면 getCurrentPosition을 다시 실행하지만 이번에는 enableHighAccuracy : true를 설정하십시오. 두 방법 모두 시간이 초과 된 후에 만 ​​사용자에게 오류 메시지를 표시합니다.

그런데 Android 환경에서 Cordova는 대개 3/4G를 도시 환경에서 사용할 때 2-3 초 내에 위치를 고정 할 수 있습니다. 그때가 아니라면 거의 절대 잠금되지 않습니다. 행운을 빕니다!

관련 문제