2016-06-22 4 views
6

Я использую родной плагин Ionic 2 Geolocation и работает не так, как ожидалось. Во-первых, я добавляю плагин.Собственная ионная 2 геолокация не работает на устройстве Android

ionic plugin add cordova-plugin-geolocation 

Затем я импортирую плагин и выдаю вызов, чтобы получить текущую позицию.

import { Geolocation } from 'ionic-native'; 
import { Geoposition, GeolocationOptions } from 'ionic-native/dist/plugins/geolocation'; 

export class MyComponent { 
protected getLocation():Promise<Geoposition> { 
    let options:GeolocationOptions = { 
    maximumAge: 0, timeout: 5000, enableHighAccuracy: false 
    }; 
    return Geolocation.getCurrentPosition(options) 
    .catch(error => { console.error(error.message) }; 
} 
} 

Я также проверил свой AndroidManifest.xml.

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

Я заметил, что таймаут всегда превышен. Если я оставлю его по умолчанию (таймаут устанавливается на бесконечность по умолчанию), то примерно через 20 минут я действительно получаю геопозицию. Конечно, 20 минут не идеальны.

Я также пробовал использовать navigator следующим образом. Но я получаю точно такие же результаты.

navigator.geolocation.getCurrentPosition(
position => { 
    console.info('using navigator'); 
    console.info(position.coords.latitude); 
    console.info(position.coords.longitude); 
}, 
error => { 
    console.warn('using navigator'); 
    console.warn(error.code); 
    console.warn(error.message); 
}, 
options 
); 

При тестировании на Chrome, код работает, как ожидалось; Единственное различие заключается в том, что я получаю всплывающее окно с вопросом, хочу ли я разрешить странице получать доступ к моему местоположению.

Я видел много людей имеют те же проблемы на SO с ионным тоже, но это с версией 1. Я хотел бы задать этот вопрос в контексте ионического 2.

Кстати, я ve также обновил Кордову, и версия появляется как 6.0.2.

npm update -g cordova 

информация о версии

  • Ионные 2.0.0-beta.30
  • Кордова 6.0.2
  • Глоток CLI 1.2.1 и местного 3.9.1
+1

Столкнулся с той же проблемой. Вы нашли решение? – likerRr

+0

найдено решение? –

+0

нет, я не нашел решение. на днях я посмотрел на ионный 2, и есть новый плагин геолокации, я собираюсь попробовать это. Я отправлю ссылку позже и попытаюсь выяснить, помогает ли она кому-либо. –

ответ

0

Вероятно Я нашел решение. Проблема заключалась в моем модуле GPS. В конце концов он прекратил находить мое местоположение на любом сайте. Я перезагрузил свой телефон, и теперь все работает.

Так что сначала проверьте, можете ли вы определить свое местоположение на сайте, например maps.google.com. Если он не может определить ваше местоположение, проблема возникает с вашим телефоном. Попробуйте перезагрузить его или перепроверить.

4

Используйте этот код:

if (navigator.geolocation) { 
     var options = { 
     enableHighAccuracy: true 
     }; 

     navigator.geolocation.getCurrentPosition(position=> { 
     console.info('using navigator'); 
     console.info(position.coords.latitude); 
     console.info(position.coords.longitude); 
     }, error => { 
     console.log(error); 
     }, options); 
    } 

Не забудьте импортировать Geolocation:

import { Geolocation } from 'ionic-native'; 

И добавить плагин:

ionic plugin add cordova-plugin-geolocation 
+0

Это будет работать без ошибок. спасибо @Felipe –

+0

Это работает красиво. В новой версии с обещаниями вы бы сделали geolocation.getCurrentPosition (options) .then ((position) => {// какая-то логика здесь}); – Kaylined

+0

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

0

Это обычно вызывается сыворотки вы добавили только ионный плагин и забыл добавить плагин cordova (не уверен, почему он не установлен ионным плагином добавить комманду г):

ionic plugin add cordova-plugin-geolocation 

, а затем:

cordova plugin add cordova-plugin-geolocation 

с установкой Cordova плагин может исправить ошибку в некоторых ситуациях.

Это также происходит при запуске приложения в браузере с ionic serve, поскольку плагины cordova недоступны.

1

Установите оба зависимости Cordova

cordova plugin add cordova-plugin-geolocation 
cordova plugin add cordova-plugin-whitelist 

Добавить это разрешение AndroidMainfest.xml

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

Имейте в виде, при работе ионного Cordova запуска андроида -l геолокации выбросит эту незащищенную ошибку. Test его на ур браузер или сделать простой бег с

ionic cordova run adnroid 

Это решило проблему для меня, надеюсь, что это поможет кому-то еще.

+0

Это сработало для меня, спасибо –

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