2013-05-31 4 views
5

Я использую Phonegap.Geolocation, чтобы получить текущую позицию пользователя.Телефонная связь Геолокация не работает

И я нашел this example в документации с официального сайта.

Однако даже считается, что готовность 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    + '<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'); 
    } 

ответ

6

На самом деле он работает, однако расположение не может быть определена в течение короткого времени, так и не может оно будет считаться успехом, ни потерпеть неудачу, и, следовательно, никаких действий не выполняется.

Это можно управлять, установив тайм-аут для обратного вызова GeoLocation

+0

Я не могу получить успешный ответ с этим, это всегда время. вам удалось что-то сделать в конце концов? – pleshy

+0

Извините, я не могу предоставить конкретный ответ. Я ожидаю, что некоторые внешние проблемы касаются вашего телефона, а не программы. – SolessChong

1

Ok. Я тоже боролся с этой проблемой [это как я добрался до этой страницы]

Но это, в конце концов, сработало. Я только что сделал поменять:

Я изменил эту строку: navigator.geolocation.getCurrentPosition (onSuccess, onError);

к этому: navigator.geolocation.getCurrentPosition (onSuccess);

и все это сейчас работает.

+0

Этот комментарий помог мне. Но какова реальная проблема? –

5

Когда есть PhoneGap функция не работает, проверьте, если соответствующее разрешение в приложение установлено. например для доступа в Интернет, или GeoPosition на андроид-устройства, ваш AndroidManifest.xml должен содержать следующие строки:

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

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

16
  1. Убедиется youryou установлена ​​геолокация плагин (запустить phonegap local plugin add org.apache.cordova.geolocation), и что GPS включен в устройстве.

  2. Добавить таймаут и установить enableHighAccuracy:

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

    В некоторых эмуляторов вам необходимо установить enableHighAccuracy к ложным, поэтому постарайтесь, что если до сих пор не работает.

  3. Если вы используете эмулятор Android, он не считывает значения GPS, поэтому нам нужно отправить их через командную строку.Мы должны начать Телнет в порту, что эмулятор работает (вы можете проверить порт в заголовке окна эмулятора, число в начале, в моем случае 5554):

    telnet localhost 5554 
    

И затем запустите команду

geo fix -122.4 37.78 

Если закрыть приложение, которое нужно повторно отправить геолокации, поэтому, если он не работает, просто запустите команду geo fix только после открытия приложения, перед срабатыванием событий тайм-аута.

+0

Да именно это работает для большего :) Спасибо @Jesus Carrera –

+0

Настройка таймаута сделала это для меня ... спасибо! –

+0

Плагин переименован, теперь команда 'cordova plugin add cordova-plugin-geolocation' – 1615903

Смежные вопросы