2016-08-16 28 views
7
platformda Cordova kullanarak coğrafi konum elde etmeye çalışmak zaman

index.js kodu:Hata kodu 3 Zaman Aşımı i Android

// debug 

function d(s) { 
    console.log(s); 
    $("#status").text(s); 
} 

// geo 

function geoWin(pos) { 
    d("geoWin(): "+pos.coords.latitude+", "+pos.coords.longitude+","+pos.coords.speed); 
} 

function geoFail(error) { 
    d("geoFail(): "+error.code+": "+error.message); 
} 

function startGeoWatch() { 
    d("startGeoWatch()"); 
    opt = {maximumAge: 0,timeout: 2000, enableHighAccuracy: true}; 
    watchGeo = navigator.geolocation.watchPosition(geoWin, geoFail, opt); 
} 

function stopGeoWatch() { 
    d("stopGeoWatch()"); 
    navigator.geolocation.clearWatch(watchGeo); 
} 

// life cycle 

function onPause() { 
    d("onPause()"); 
    stopGeoWatch(); 
} 

function onResume() { 
    d("onResume()"); 
    startGeoWatch(); 
} 

// init 

function onDeviceReady() { 
    d("onDeviceReady()"); 
    document.addEventListener("pause", onPause, false); 
    document.addEventListener("resume", onResume, false); 
    startGeoWatch(); 
} 

function main() { 
    document.addEventListener('deviceready', onDeviceReady, false); 
} 

// main & globals 
var watchGeo=null; 
main(); 

benim Config.xml Kodu:

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.terokarvinen.geo" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name>HelloCordova</name> 
    <description> 
     A sample Apache Cordova application that responds to the deviceready event. 
    </description> 
    <author email="[email protected]" href="http://cordova.io"> 
     Apache Cordova Team 
    </author> 
    <content src="index.html" /> 
    <plugin name="cordova-plugin-whitelist" version="1" /> 
    <access origin="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-intent href="tel:*" /> 
    <allow-intent href="sms:*" /> 
    <allow-intent href="mailto:*" /> 
    <allow-intent href="geo:*" /> 
    <platform name="android"> 
     <allow-intent href="market:*" /> 
    </platform> 
    <platform name="ios"> 
     <allow-intent href="itms:*" /> 
     <allow-intent href="itms-apps:*" /> 
    </platform> 
    <plugin name="cordova-plugin-geolocation" spec="~2.2.0" /> 
</widget> 

AndroidManifest kodu:

<?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.terokarvinen.geo" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> 
      <intent-filter android:label="@string/launcher_name"> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> 
    <uses-permission android:name="android.permission.ACCESS_GPS" /> 
    <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
</manifest> 

Bu uygulamayı firefox'ta çalıştırmayı denediğimde, tam coğrafi konumumu verir. Ancak, aynı uygulamayı çalıştırmayı denediğimde android cihaz. her zaman zaman aşımı süresi expired.i konsolda herhangi bir hata var.

benim uygulamasında GPS isteğinde Başvurumu sahip konum menüde o ettirdiniz android .I GPS hizmeti talep edilir test ettirdi.

+0

Aynısını aygıtta test etmek için projenizi github'da paylaşır mısınız? – Gandhi

+0

emin ben sana bir bağlantı paylaşacağız. –

+0

Android'de hangi tarayıcıları denediniz? –

cevap

1

myriads of similar questions on Stack Overflow dayanarak, Cordova coğrafi konum eklentisi issues especially on Android sahiptir görünüyor.

cordova plugin rm org.apache.cordova.geolocation şu şekildedir:

  1. coğrafi konum eklentisi çıkarın: çözüm etmektir görünüyor.

    Uygulamanız standart HTML5 navigator.geolocation işlevselliğine geri dönecektir.

    , çift kontrol Konum servis cihazınız, belki enableHighAccuracy ayarlanırsa vs. kalın duvarlar, bir binada değil (kapsama sahip olduğunu, üzerinde Elbette
  2. olan

      false'a gidin ve daha büyük bir zaman aşımı ayarlayın).

    1. Manifest'inizde aşağıdaki satırları ekleyerek aşağıdaki izinlere sahip olun: Wifi ve cep telefonu antenlerini erişebilmeleri için

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

    Ayrıca, uygulama internet erişimi vermek:

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

    Bunu kendim denemiyorum ancak siz Bunu yaptıktan sonra daha iyi şanslar.

    Bana neler olduğunu anlatayım.

+0

Android'de coğrafi konum eklentisi, HTML5 uygulamasını kullanır, sadece – jcesarmobile

+0

izinlerini ekler, bu benim için çalışmazdı.Zamanınız için teşekkürler @ThomCunningham –

+0

Hala aynı hatayı alıyor musunuz? –

0
<access origin="*"/> 
<access origin="*://*.googleapis.com/*" subdomains="true" /> 
<access origin="*://*.gstatic.com/*" subdomains="true" /> 
<access origin="*://*.google.com/*" subdomains="true" /> 
<access origin="*://*.googleusercontent.com/*" subdomains="true" /> 

Yukarıdaki kodla çalışın .Bunu config.xml'de bulabilirsiniz. Bunu denetleyin Answer

+0

kontrol edin lütfen bu kodu neden yapılandırmamda kullanmalıyım? –

+0

Bu, google API'larının izinlerini ayarlayacaktır. –