Wreszcie mam rozwiązać ten problem, teraz na mój telefon android, getCurrentPosition
funkcja lokalizacja powrót infomation bardzo szybko każdy czas, nigdy nie muszę ponownie uruchamiać mojego telefonu! Nie jestem pewien, czy plugin geo void 4.13 ma błędy.
Powodem wystąpienia tego problemu jest zawsze użycie funkcji przeglądarki w celu znalezienia pozycji, dlatego musimy pozwolić aplikacji na używanie natywnej implementacji cordova zamiast html5.
Oto rozwiązanie z cordova v3.4.1, mam nadzieję, że może ci pomóc, w rzeczywistości rozwiązało moje pytanie.
rozwiązać krok:
1.remove na org.apache.cordova.geolocation
$ cordova plugin rm org.apache.cordova.geolocation
2.reinstall nowy plugin org.apache.cordova.geolocation
$ cordova plugin add org.apache.cordova.geolocation
3 . Kopiuj wtyczkę do e: \
wprowadź folder wtyczek, taki jak 'YOUR_APP_FOLDER \ plugins \'
skopiować otwór org.apache.cordova.geolocation
do E:\org.apache.cordova.geolocation
4.remove wtyczki ponownie
$ cordova plugin rm org.apache.cordova.geolocation
5.Edit plugin.xml
w E:\org.apache.cordova.geolocation\plugin.xml
edycja wtyczki.plik xml jak poniżej:
... ...
<name>Geolocation</name>
<description>Cordova Geolocation Plugin</description>
<license>Apache 2.0</license>
<keywords>cordova,geolocation</keywords>
<repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git</repo>
<issue>https://issues.apache.org/jira/browse/CB/component/12320638</issue>
<!-- android Code Comments
<platform name="android">
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permissionandroid 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" />
</config-file>
</platform>
-->
<!-- amazon-fireos change to android-->
<platform name="android">
<js-module src="www/Coordinates.js" name="Coordinates">
<clobbers target="Coordinates" />
</js-module>
<js-module src="www/PositionError.js" name="PositionError">
<clobbers target="PositionError" />
</js-module>
<js-module src="www/Position.js" name="Position">
<clobbers target="Position" />
</js-module>
<js-module src="www/geolocation.js" name="geolocation">
<clobbers target="navigator.geolocation" />
</js-module>
<config-file target="res/xml/config.xml" parent="/*">
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*">
<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" />
</config-file>
<source-file src="src/amazon/GeoBroker.java" target-dir="src/org/apache/cordova/geolocation" />
<source-file src="src/amazon/GPSListener.java" target-dir="src/org/apache/cordova/geolocation" />
<source-file src="src/amazon/NetworkListener.java" target-dir="src/org/apache/cordova/geolocation" />
<source-file src="src/amazon/CordovaLocationListener.java" target-dir="src/org/apache/cordova/geolocation" />
</platform>
<!-- ios -->
<platform name="ios">
... ...
6.add plugin ponownie
$ cordova plugin add E:\org.apache.cordova.geolocation
7, uruchom build commond
$ cordova build android
8.check jeśli to działa dobrze
check YOUR_APP\plugins\android.json
koniecznością obejmują:
{
"xml": "<feature name=\"Geolocation\"><param name=\"android-package\" value=\"org.apache.cordova.geolocation.GeoBroker\" /></feature>",
"count": 1
},
... ...
{
"xml": "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
"count": 4
},
{
"xml": "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
"count": 4
},
{
"xml": "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\" />",
"count": 1
}
check YOUR_APP\platforms\android\AndroidManifest.xml
musi zawierać:
<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_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
check YOUR_APP\platforms\android\res\xml\config.xml
musi zawierać:
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
9.run aplikacja
napisać kod geelocation zdobycia lat i LNG:
navigator.geolocation.getCurrentPosition(function(pos){
alert('suc')
alert(JSON.stringify(pos))
},function(errMsg){
alert(JSON.stringify(errMsg))
navigator.geolocation.getCurrentPosition(function(pos){
alert('suc')
alert(JSON.stringify(pos))
},function(errMsg){
alert(JSON.stringify(errMsg))
}, {
enableHighAccuracy: true,
timeout: 60*1000*2,
maximumAge: 1000*60*10
});
}, {
enableHighAccuracy: false,
timeout: 60*1000,
maximumAge: 1000*60*10
});
Jeśli twoja obsługa telefoniczna korzysta z lokalizacji Wi-Fi/3G, natychmiast otrzymamy lokalizację, w przeciwnym razie zobaczysz errMsg timeout
, a następnie geolocation
użyje gps do zlokalizowania stanowiska z natywnym narzędziem.
teraz dostajemy lat i lng, i nigdy nie trzeba restartować telefonu Android, dziękuję za dobroć.
jeśli problem nadal występuje, spróbuj wyczyścić pamięć podręczną Webview zainstalować wtyczkę:
https://github.com/moderna/cordova-plugin-cache
Ten problem jest wciąż żywy na PG 3.5, a Twoje rozwiązanie wciąż działa! – rodripf
Czy nadal musimy to wszystko robić w PG 5.1.1? Przez większość czasu navigator.geolocation.getCurrentPosition() nie działa na moim urządzeniu z systemem Android.Ponowne uruchomienie również nie pomaga. – novalain
Tak, nadal muszę ... –