2016-06-22 26 views
6

Używam natywnej wtyczki geoprzestrzennej Ionic 2 i nie działa zgodnie z oczekiwaniami. Najpierw dodaję wtyczkę.Natywna geolokalizacja jonowa 2 nie działa na urządzeniu z Androidem

ionic plugin add cordova-plugin-geolocation 

Następnie zaimportuję wtyczkę i wykonam połączenie, aby uzyskać aktualną pozycję.

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) }; 
} 
} 

Sprawdziłem również mój AndroidManifest.xml.

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

Zauważyłem, że limit czasu jest zawsze przekroczony. Jeśli pozostawię domyślny (limit czasu jest domyślnie ustawiony na nieskończoność), to po około 20 minutach otrzymam pozycję geograficzną. Oczywiście 20 minut nie jest idealne.

Próbowałem również użyć navigator w następujący sposób. Ale otrzymuję dokładnie takie same wyniki.

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 
); 

Podczas testowania na Chrome, kod działa zgodnie z oczekiwaniami; jedyną różnicą jest to, że dostaję wyskakujące okienko z pytaniem, czy chcę zezwolić stronie na dostęp do mojej lokalizacji.

Widziałem wiele osób ma ten sam problem na SO z jońskich też, ale to z wersji 1. Chciałem zadać to pytanie w kontekście jonowych 2.

Nawiasem mówiąc, ja” zaktualizowano także Cordova, a wersja jest wyświetlana jako 6.0.2.

npm update -g cordova 

informacje Wersja

  • Ionic 2.0.0-beta.30
  • Cordova 6.0.2
  • Gulp CLI 1.2.1 i lokalne 3.9.1
+1

Wobec tego samego problemu. Znalazłeś rozwiązanie? – likerRr

+0

znalezione rozwiązanie? –

+0

Nie, nie znalazłem rozwiązania. pewnego dnia spojrzałem na ion 2, a tam jest nowa wtyczka geolokalizacyjna, spróbuję tego. opublikuję link później i spróbuję sprawdzić, czy to pomaga. –

Odpowiedz

0

Prawdopodobnie Znalazłem rozwiązanie. Problem dotyczył mojego modułu GPS. W końcu przestał znajdować moją lokalizację w dowolnej witrynie. Przeładowałem telefon i teraz wszystko działa.

Najpierw sprawdź, czy możesz określić swoją lokalizację na stronie, takie jak maps.google.com. Jeśli nie może określić Twojej lokalizacji, problem dotyczy telefonu. Spróbuj przeładować lub odświeżyć.

4

użyć tego kodu:

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); 
    } 

Pamiętaj, aby importować Geolocation:

import { Geolocation } from 'ionic-native'; 

I dodać wtyczki:

ionic plugin add cordova-plugin-geolocation 
+0

To zadziała bez błędów. dziękuję @Felipe –

+0

To działa pięknie. W nowszej wersji z obietnicami zrobiłbyś geolocation.getCurrentPosition (opcje) .then ((position) => {// jakaś logika tutaj}); – Kaylined

+0

Jak mogę uruchomić tę funkcję, jeśli lokalizacja jest wyłączona, a następnie włącz ją. Mam na myśli, że jeśli lokalizacja jest wyłączona, geolokalizacja zwróci błąd, więc jeśli później włączę ją, gdy jestem na tej samej stronie, geolokalizacja nie zostanie uruchomiona ponownie, więc w jaki sposób mogę pozwolić, aby uruchomiła się ponownie jak słuchacz na stanie lokalizacji. –

0

Zazwyczaj jest to spowodowane serwatkę dodałeś tylko wtyczki jonowej i zapomniałem dodać wtyczkę cordova (nie wiem, dlaczego nie jest ona zainstalowana przez jonową wtyczkę dodaj komendę d):

ionic plugin add cordova-plugin-geolocation 

a następnie:

cordova plugin add cordova-plugin-geolocation 

instalacji wtyczki Cordova można naprawić błąd w niektórych sytuacjach.

Dzieje się tak również podczas uruchamiania aplikacji w przeglądarce z ionic serve, ponieważ wtyczki cordova nie są dostępne.

1

zainstalować zarówno zależności Cordova

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

dodać to uprawnienia do 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" /> 

Pamiętaj, kiedy uruchomiony jonowy run Cordova android -l geolokalizacji rzuci ten niezabezpieczonych błąd. przetestować go na ur przeglądarki lub zrobić prosty bieg z

ionic cordova run adnroid 

To rozwiązało problem dla mnie, mam nadzieję, że pomaga kogoś innego.

+0

To zadziałało dla mnie, dziękuję –

Powiązane problemy