2010-11-12 2 views
5

Я уже давно использую Android и эмулятор 2.2 и просто начал сталкиваться с проблемой. Моя геолокация не установлена ​​в эмуляторе. Сначала я подумал, что это проблема с PhoneGap 0.92, но после возврата к 0,91 и открытия более старого проекта это тоже верно. В DDMS мои координаты установлены и я их отправляю. Я также telnet и выдаю команду geo fix, и я получаю ответ OK. Кажется, все хорошо, но по какой-то причине эмулятор все еще не знает.Android-эмулятор, имеющий проблемы с Geolocation

Я нашел несколько старых сообщений re: настройка часового пояса. Я это сделал. Еще не повезло. Я даже использую браузер и перехожу на html5demos.com/geo, чтобы узнать, может ли он найти меня, а это не так.

Это использовалось для работы, не уверен, что произошло с тех пор. Я обновил мою версию Java 1.6.0.22. Android SDK 2.2, API 8, версия 2.

Любые советы или рекомендации будут оценены. Я застрял в этой точке.

Мой PhoneGap/JS вызова:

var getLocation = function() { 
    var suc = function(p){ 
     alert(p.coords.latitude + " " + p.coords.longitude); 
    }; 
var fail = function(error){ 
    alert('code: ' + error.code + '\n' + 
      'message: ' + error.message + '\n'); 
    }; 
    navigator.geolocation.getCurrentPosition(suc,fail); 
} 

'провал' продолжает происходить. Код ошибки 2. Последний провайдер местоположения был отключен.

--UPDATE По-прежнему имеет ту же проблему. Я нашел более старое приложение сопоставления, которое я использовал летом, это было 2.1. Поэтому я перекомпилировал и запустил это на эмуляторе 2.1, и это тоже не работает. Самое забавное в Eclipse, когда я нахожусь в DDMS и отправляю координаты в 2.1. Я вижу «подтверждение, что оно было отправлено в эмулятор, но с 2.2 я этого не делаю».

Большая разница в том, что я сейчас за прокси-сервером (новая работа), где раньше я не был. Наверное, я мог бы попробовать дома ... не уверен, что это важно.

+0

Вы пробовали/работает ли он на телефоне? – davejohnson

ответ

5

У меня была та же проблема. Решение в конце http://docs.phonegap.com/phonegap_geolocation_geolocation.md.html#Geolocation (прокрутите вниз):

«Android Quirks

В Android 2.x имитаторы не будет возвращать результат геолокации если опция enableHighAccuracy не установлена ​​истина

{. enableHighAccuracy: true} "

Таким образом, вы должны установить enableHighAccuracy в свой навигатор.geolocation.getCurrentPosition и вызовы navigator.geolocation.watchPosition.

+0

Спасибо за подсказку. Но я не думаю, что это не проблема :(Я думаю, что это проблема с эмулятором (возможно). Во-первых, каждый раз, когда я запускаю его, я получаю глупую японскую клавиатуру по какой-то причине. Если я перейду к чистым приложениям HTML5, получает местоположение из Chrome, он не работает. Как это -> http://html5demos.com/geo. Это работает в моем браузере, но не в браузере эмулятора. – jdruid

8

Единственный способ, которым я нашел эту работу, - это подключиться к эмулятору и выдать «широту долготы geo fix» после того, как я вызвал код, который тестирую.Нечто подобное эмулирует GPS-координаты Тронхейм, Норвегия (порт эмулятора обычно 5554, но это может варьироваться в зависимости от ваших настроек):

[email protected]:~$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
geo fix 10.40 63.40 
OK 
quit 
Connection closed by foreign host. 

Более подробную информацию о эмуляции можно найти here

+0

Спасибо. Я тоже это пробовал. Все еще не повезло. – jdruid

+0

Я протестировал html5demos.com/geo, и это тоже не работает для меня. Но это работает для всех моих собственных сайтов ... – Kristian

12

Вы должны поставить enableHighAccuracy в getCurrentPosition, например:

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

Далее, вы должны телнет в эмулятор, и гео зафиксировать местоположение (широта, долгота) вы хотите:

[email protected]:~$ telnet localhost 5554 
Trying 127.0.0.1... 
Connected to localhost.localdomain. 
Escape character is '^]'. 
Android Console: type 'help' for a list of commands 
OK 
geo fix 101.689453 3.074695 
OK 
quit 
Connection closed by foreign host. 

Затем запустите приложение PhoneGap.

+3

ужасно, это сработало для меня, спасибо :) О, также обратите внимание на кого-нибудь, кто пытается вам запустите geo fix перед каждым вызовом getcurrentposition из моих экспериментов. Может быть, это было более раздражающим, не уверенным. – MikeIsrael

+2

@MikeIsrael Было бы очень сложно, если бы он был более раздражающим. – mraaroncruz

+0

Работа очень хорошая! – 2014-02-06 08:27:36

0

Пожалуйста, добавьте geolocationOptions { enableHighAccuracy: true } в navigator.geolocation.getCurrentPosition(suc,fail);

Это работа для меня.

Симуляторы Android 2.x не вернут результат геолокации, если для параметра enableHighAccuracy не установлено значение true.

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

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