2

android4.0.4とPhonegap1.9でジオロケーションを使用しようとしています。http://docs.phonegap.com/en/1.9.0/cordova_geolocation_geolocation.md.html#Geolocationの最初の例を試しました

AndroidManifest.xmlとplugins.xmlに行を追加しました。私はGPSを有効にし、グーグルマップでその動作をしました。しかし、銀河のネクサスでPhonegapを使用してhtmlファイルを開始すると、「ジオロケーションを検索しています...」と表示され、何も実行されません。

これが完全なLogcat出力です。

07-17 10:13:08.296: D/CordovaWebView(7612): >>> loadUrlNow()
07-17 10:13:18.984: D/CordovaWebView(7612): >>> loadUrlNow()
07-17 10:13:19.132: D/OpenGLRenderer(7612): Flushing caches (mode 0)
07-17 10:13:19.179: D/OpenGLRenderer(7612): Flushing caches (mode 1)
07-17 10:13:33.984: I/CordovaLog(7800): Changing log level to DEBUG(3)
07-17 10:13:33.984: I/CordovaLog(7800): Found preference for useBrowserHistory=false
07-17 10:13:33.984: D/CordovaLog(7800): Found preference for useBrowserHistory=false
07-17 10:13:33.984: D/DroidGap(7800): DroidGap.init()
07-17 10:13:33.991: D/CordovaWebView(7800): >>> loadUrl    
(file:///android_asset/www/geolocation.html)
07-17 10:13:33.991: D/PluginManager(7800): init()
07-17 10:13:33.991: D/CordovaWebView(7800): >>> loadUrlNow()
07-17 10:13:34.023: D/DroidGap(7800): onMessage(onPageStarted,file:///android_asset/www/geolocation.html)
07-17 10:13:34.023: D/SoftKeyboardDetect(7800): Ignore this event
07-17 10:13:34.046: D/libEGL(7800): loaded /system/lib/egl/libGLES_android.so
07-17 10:13:34.046: D/libEGL(7800): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
07-17 10:13:34.054: D/libEGL(7800): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
07-17 10:13:34.070: D/libEGL(7800): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
07-17 10:13:34.140: D/dalvikvm(7800): GC_CONCURRENT freed 139K, 2% free 12959K/13191K, paused 3ms+2ms
07-17 10:13:34.210: D/OpenGLRenderer(7800): Enabling debug mode 0
07-17 10:13:34.210: D/SoftKeyboardDetect(7800): Ignore this event
07-17 10:13:34.390: D/Cordova(7800): onPageFinished(file:///android_asset/www/geolocation.html)
07-17 10:13:34.390: D/CordovaWebView(7800): >>> loadUrlNow()
07-17 10:13:34.390: D/DroidGap(7800): onMessage(onNativeReady,null)
07-17 10:13:34.390: D/DroidGap(7800): onMessage(onPageFinished,file:///android_asset/www/geolocation.html)
07-17 10:13:34.398: I/SqliteDatabaseCpp(7800): sqlite returned: error code = 14, msg = cannot open file at line 27701 of [8609a15dfa], db=/data/data/de.xxxx.ble.html5/databases/webview.db
07-17 10:13:34.398: I/SqliteDatabaseCpp(7800): sqlite returned: error code = 14, msg = os_unix.c: open() at line 27701 - "" errno=2 path=/CachedGeoposition.db, db=/data/data/de.xxxx.ble.html5/databases/webview.db
07-17 10:13:34.413: D/DroidGap(7800): onMessage(networkconnection,3g)
07-17 10:13:36.398: D/DroidGap(7800): onMessage(spinner,stop)

onDeviceReady()関数に入りましたが、onSuccessもonErrorも呼び出さないと思います。

それが私のコードです:

  <!DOCTYPE html>
  <html>  
  <head>    
  <title>Device Properties Example</title>    
  <script type="text/javascript" charset="utf-8" src="cordova-1.9.0.js"></script>    
  <script type="text/javascript" charset="utf-8">    

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

 // Cordova is ready      
 function onDeviceReady() {  
navigator.geolocation.getCurrentPosition(onSuccess, onError);    
 } 

// onSuccess Geolocation        
function onSuccess(position) {        
var element = document.getElementById('geolocation');  

element.innerHTML = 'Latitude: '           + position.coords.latitude                 
          + '<br />' + 
                    'Longitude: '          + 
           position.coords.longitude             + '<br />' +   
                    'Altitude: '           + position.coords.altitude              + '<br />' +   
                    'Accuracy: '           + position.coords.accuracy              + '<br />' +   
                    'Altitude Accuracy: '  + position.coords.altitudeAccuracy      + '<br />' +   
                    'Heading: '            + position.coords.heading               + '<br />' +   
                    'Speed: '              + position.coords.speed                 + '<br />' +  
                    'Timestamp: '          + position.timestamp 
                    + '<br />'; 


   }    


    // 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>

更新:コードがInternet Explorer 9で機能していることを発見しましたが、GalaxyNexusのAndroid4.0.4ではFirefoxベータ版またはChromeでは機能しません。Phonegapを使用したAndroidパッケージとしては機能せず、通常のhtml5ページとしても機能しません。IPhone4Sでそれは働いています!

何が問題なのか、何かアイデアがあれば教えてください!

ありがとう!

4

1 に答える 1

0

Google API SDK を使ってみよう! たとえば、2.3.3 / 10 バージョン。

于 2013-02-28T07:58:15.523 に答える