2013-11-23 2 views
1

안드로이드 플랫폼에 익숙하지 않으므로 기존 샘플 코드로 학습을 시작하고 싶었습니다. 나는 GPS 좌표를 획득하려고 노력 중이므로 아래 코드를 보았습니다. 아래 코드에서 장치가 시작되면 onDeviceReady() 메서드는 실행 중이지만 onSuccess() 메서드는 실행되지 않습니다. 이 문제를 해결하는 방법? 나는 내 프로젝트에서 cordova-2.8.0.jar를 사용하고있다.Android Phonegap의 위도 경도 추적?

<!DOCTYPE html> 
<html xml:lang="en" lang="en"> 
    <head> 
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;"> 
     <title>PhoneGap</title> 
     <script type="text/javascript" charset="utf-8"> 

    // Wait for Cordova to load 
    // 
    document.addEventListener("deviceready", onDeviceReady, false); 

    var watchID = null; 

    // Cordova is ready 
    // 
    function onDeviceReady() { 
     // Throw an error if no update is received every 30 seconds 
     alert("Test1"); 
     var options = { 
     timeout: 3000 
      }; 
     alert("TEst2"+options); 
     watchID = navigator.geolocation.watchPosition(onSuccess, onError, options); 
     alert("TEst3"); 
    } 

    // onSuccess Geolocation 
    // 
    function onSuccess(position) { 
    alert("RAmesh"); 
     /* var element = document.getElementById('geolocation'); 
     element.innerHTML = 'Latitude: ' + position.coords.latitude  + '<br />' + 
          'Longitude: ' + position.coords.longitude  + '<br />' + 
          '<hr />'  + element.innerHTML;*/ 
    } 

    // onError Callback receives a PositionError object 
    // 
    function onError(error) { 
     /* alert('code: ' + error.code + '\n' + 
       'message: ' + error.message + '\n');*/ 
    } 

    </script> 
    </head> 
    <body> 
    <p id="geolocation">Finding geolocation...</p> 
    </body> 
</html> 
+0

코드를 조금 재정렬했는데 [this] (http://pastebin.com/GTjaQ92i)를 시도하십시오. 귀하의 watchPosition에서 당신은 onSuccess와 onError를 호출하고 있지만 괄호를 사용하지 않으면 그 이름을 가진 변수를 찾고 있습니다. 그런 식으로 호출하려는 경우 해당 변수 이름에 함수를 할당해야합니다. –

답변

2

봅니다 옵션을 변경 다음과 같이

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

을하고 Config.xml의 :

var options = { 
    enableHighAccuracy: true, 
    timeout: 30000, 
    maximumAge: 0 
}; 

당신의 AndroidManifest.xml에서 위치를 사용하도록 설정 권한이 있는지 확인

<plugin name="Geolocation" value="org.apache.cordova.GeoBroker" /> 
+0

감사합니다. 괜찮습니다. – user1869857

0

먼저 Dpa99c의 지시.

둘째, GenyMotion 에뮬레이터를 사용하십시오. 그것은 안드로이드에 대한 awsome 에뮬레이터 : 기본값보다 빠르고 당신은 위치, 카메라 및 훨씬 더 수정할 수있는 위젯이 있습니다.

셋째, Cordova/PhoneGap에서 한 가지 현혹적인 문제를 발견했습니다. - cordova (명령 줄에서)로 만든 Android 프로젝트를 열면 requestUpdate는 ..... 60 Seconds !!!!!로 설정됩니다. !!!!!! 매 순간 새로운 위치가 있습니다! GPS를 사용하는 경우에도 (enableHighAccuracy = "true"). 그래서 이것을 1000에 설정하려고하면 org.apache.cordova.geolocation 패키지 -> GPSListener 클래스에서 LocationManager.GPS_PROVIDER를 찾으십시오!

+0

큰 충고에 감사드립니다. 예, GenyMotion Jar 파일을 다운로드했습니다. 어떻게 eclipse에 포함시킬 수 있습니까? 그 에뮬레이터를 사용하려면 어떻게해야합니까? – user1869857

+0

GenyMotion을 설치하기 만하면됩니다 (VirtualBix 포함). Android 기기 시작 : 프랑스어로 된 소프트웨어 인 경우 'Ajouter'를 클릭하고 기기를 선택한 다음 'Lancer'을 클릭합니다. 30 초 이상 검정 화면이 나타나면 창을 닫고 다시 시작하십시오. 그런 다음 Eclipse (android)로 이동하십시오. 녹색 화살표 (실행)의 오른쪽에있는 검은 색 화살표를 클릭하십시오. "실행 구성"-> "대상"-> "모든 호환 장치/AVD에서 실행"및 "활성 장치"를 선택하십시오. 사실, GenuMotion은 컴퓨터에 연결된 물리적 장치의 역할을합니다. 초록색 화살표를 클릭하면 Geny Device를 선택할 수 있습니다. – Cocorico

+0

안녕하세요. 제 일식에 GenyMotion 플러그인을 추가하고 싶습니다. 항아리를 다운로드하여 Eclipse 플러그인에 포함 시켰습니다. 다음 genemotion 열려고하면 오류 아래에 표시됩니다. "Genymotion 설정에서 Genymotion 디렉토리가 설정되지 않았습니다." genymotion 설정을 열 때 기본 경로가 설정되지 않았습니다. 어떻게 경로를 설정할 수 있습니까? – user1869857