PhoneGap геолокации не працуе

Я выкарыстоўваю Phonegap.Geolocation, каб атрымаць бягучае становішча карыстальніка.

І я знайшоў гэты прыклад ў дакументацыі з афіцыйнага сайта.

Тым не менш, нават думаў, што onDevice гатовая выканана, ні поспех, ні функцыя памылкі зваротнага выкліку выконваецца. І я сапраўды зьбянтэжаны гэтым.

document.addEventListener("deviceready", onDeviceReady, false);

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

   //onSuccess Geolocation
    //
    function onSuccess(position) {
        var element = document.getElementById('geolocation');
        element.innerHTML = 'Latitude: '           + position.coords.latitude              + '
' + 'Longitude: ' + position.coords.longitude + '
' + 'Altitude: ' + position.coords.altitude + '
' + 'Accuracy: ' + position.coords.accuracy + '
' + 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '
' + 'Heading: ' + position.coords.heading + '
' + 'Speed: ' + position.coords.speed + '
' + 'Timestamp: ' + position.timestamp + '
'; } //onError Callback receives a PositionError object // function onError(error) { alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n'); }
6

8 адказы

  1. Make sure youryou installed the geolocation plugin (run phonegap local plugin add org.apache.cordova.geolocation), and that GPS is enabled in the device.

  2. Add a timeout and set enableHighAccuracy:

    navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
    

    In certain emulators you need to set enableHighAccuracy to false, so try that if still doesn't work.

  3. If you are using an Android emulator, it doesn’t read GPS values, so we need to send them via command line. We need to start a telnet session in the port that the emulator is running (you can check the port in the emulator window title, the number at the beginning, in my case 5554):

    telnet localhost 5554
    

А затым выканаць каманду

    geo fix -122.4 37.78

Калі закрыць прыкладанне вам трэба паўторна адправіць геолокации, таму, калі ён не працуе, проста запусціць гео папраўкі каманду толькі пасля адкрыцця прыкладання, перад спрацоўваннем падзей тайм-аўту.

17
дададзена
Налада тайм-аўту зрабіў гэта для мяне ... дзякуй!
дададзена аўтар Mike Chamberlain, крыніца
Ды менавіта гэта працуе больш :) Дзякуй @Jesus Каррера
дададзена аўтар Bastin Robin, крыніца
Убудова быў перайменаваны, каманда цяпер Cordova убудова дадаць Cordova-убудова-геолокации
дададзена аўтар 1615903, крыніца
  1. Make sure youryou installed the geolocation plugin (run phonegap local plugin add org.apache.cordova.geolocation), and that GPS is enabled in the device.

  2. Add a timeout and set enableHighAccuracy:

    navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
    

    In certain emulators you need to set enableHighAccuracy to false, so try that if still doesn't work.

  3. If you are using an Android emulator, it doesn’t read GPS values, so we need to send them via command line. We need to start a telnet session in the port that the emulator is running (you can check the port in the emulator window title, the number at the beginning, in my case 5554):

    telnet localhost 5554
    

А затым выканаць каманду

    geo fix -122.4 37.78

Калі закрыць прыкладанне вам трэба паўторна адправіць геолокации, таму, калі ён не працуе, проста запусціць гео папраўкі каманду толькі пасля адкрыцця прыкладання, перад спрацоўваннем падзей тайм-аўту.

17
дададзена
Налада тайм-аўту зрабіў гэта для мяне ... дзякуй!
дададзена аўтар Mike Chamberlain, крыніца
Ды менавіта гэта працуе больш :) Дзякуй @Jesus Каррера
дададзена аўтар Bastin Robin, крыніца
Убудова быў перайменаваны, каманда цяпер Cordova убудова дадаць Cordova-убудова-геолокации
дададзена аўтар 1615903, крыніца

На самай справе ён працуе, аднак размяшчэнне не можа быць вызначана на працягу кароткага часу, так і не можа яно будзе лічыцца поспехам, ні пацярпець няўдачу, і, такім чынам, ніякіх дзеянняў не выконваецца.

Гэта можна кіраваць, усталяваўшы тайм-аўт для зваротнага выкліку GeoLocation

6
дададзена
Я не магу здацца, каб атрымаць паспяховы адказ з гэтым ён заўсёды timesout. Вам удалося што-небудзь, якія працуюць у рэшце рэшт?
дададзена аўтар pleshy, крыніца
На жаль, я не магу даць канкрэтны адказ. Я чакаю, што гэта нейкія знешнія пытанні пра тэлефон, а не праграма.
дададзена аўтар SolessChong, крыніца

На самай справе ён працуе, аднак размяшчэнне не можа быць вызначана на працягу кароткага часу, так і не можа яно будзе лічыцца поспехам, ні пацярпець няўдачу, і, такім чынам, ніякіх дзеянняў не выконваецца.

Гэта можна кіраваць, усталяваўшы тайм-аўт для зваротнага выкліку GeoLocation

6
дададзена
Я не магу здацца, каб атрымаць паспяховы адказ з гэтым ён заўсёды timesout. Вам удалося што-небудзь, якія працуюць у рэшце рэшт?
дададзена аўтар pleshy, крыніца
На жаль, я не магу даць канкрэтны адказ. Я чакаю, што гэта нейкія знешнія пытанні пра тэлефон, а не праграма.
дададзена аўтар SolessChong, крыніца

Калі ёсць PhoneGap функцыя не працуе, праверце, калі адпаведнае дазвол у дадатку ўстаноўлена. напрыклад для доступу ў Інтэрнэт, або GeoPosition на андроіда-прылады, ваш AndroidManifest.xml павінен змяшчаць наступныя радкі:



5
дададзена

Добра. Я таксама змагаўся з гэтай праблемай [вось як я трапіў на гэтую старонку]

Але, нарэшце, працаваў. Я толькі што зрабіў на змены:

Я змяніў гэты радок: navigator.geolocation.getCurrentPosition (OnSuccess, OnError);

да гэтага: navigator.geolocation.getCurrentPosition (OnSuccess);

і ўсё гэта ў цяперашні час працуе.

1
дададзена
Гэты каментар дапамог мне. Але якая рэальная праблема стаіць за ім?
дададзена аўтар S Vinesh, крыніца

Пераканайцеся, што вы ўключылі JavaScript ў целе, а не ў галаўны часткі HTML. Я даведаўся пра гэта цяжкі шлях, пасля таго, як не знаходзячы ключ праз інтэрнэт, таму падумаў, што было б лепш, каб падзяліць. Ён працаваў як шарм для мяне як мага хутчэй, я пераклаў яваскрипт кода ад

0
дададзена

Праблема з браўзэрам. Ачысціце кэш браўзэра і запусціце яго зноў.

src : http://community.phonegap.com/nitobi/topics/geolocation_works_with_one_android_device_but_not_another

0
дададзена