Finalmente ho risolto il problema, ora sul mio telefono Android, getCurrentPosition
funzione di posizione di ritorno infomation molto rapidamente ogni volta, non ho mai bisogno di riavviare di nuovo il mio telefono! Non sono sicuro che il plug-in di geolocalizzazione di cordova v3.4.1 abbia dei bug.
La ragione per cui si verifica questo problema è che dobbiamo sempre utilizzare la funzione del browser navigator.geolocation.getCurrentPosition
per individuare la posizione, quindi è necessario consentire all'applicazione di utilizzare l'implementazione nativa cordova anziché html5.
Ecco la soluzione con cordova v3.4.1, spero che possa aiutarti, infatti ha risolto la mia domanda.
risolvere passo:
1.Remove l'org.apache.cordova.geolocation
$ cordova plugin rm org.apache.cordova.geolocation
2.reinstall un nuovo plugin org.apache.cordova.geolocation
$ cordova plugin add org.apache.cordova.geolocation
3 Copia il plug-in su e: \
inserisci la cartella del plug-in, ad esempio "YOUR_APP_FOLDER \ plugins \ '
copiare il foro org.apache.cordova.geolocation
-E:\org.apache.cordova.geolocation
4.Rimuovere il plugin di nuovo
$ cordova plugin rm org.apache.cordova.geolocation
5.edit il plugin.xml
in E:\org.apache.cordova.geolocation\plugin.xml
modificare il plugin.file XML come di seguito:
... ...
<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 di nuovo
$ cordova plugin add E:\org.apache.cordova.geolocation
7, eseguire accumulo commond
$ cordova build android
8.Controllare se funziona bene
controllo YOUR_APP\plugins\android.json
must include:
{
"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
}
controllo YOUR_APP\platforms\android\AndroidManifest.xml
deve contenere:
<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" />
controllo YOUR_APP\platforms\android\res\xml\config.xml
devono comprendere:
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
9.run l'applicazione
scrivere il codice per ottenere geelocation lat e 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
});
se il supporto telefonico usa wifi/3G locate, otterremo immediatamente la posizione, altrimenti vedrete il errMsg timeout
e quindi geolocation
utilizzeremo gps per localizzare postion con lo strumento nativo.
ora otteniamo lat e lng e non è mai necessario riavviare il telefono Android, grazie al cielo.
se avete ancora il problema, tentare di installare il plugin per pulire la cache WebView:
https://github.com/moderna/cordova-plugin-cache
Questo problema è ancora attivo su PG 3.5 e la soluzione funziona ancora! – rodripf
Abbiamo ancora bisogno di fare tutto questo in PG 5.1.1? Il più delle volte il navigator.geolocation.getCurrentPosition() non funziona affatto sul mio dispositivo Android.Riavviarlo non aiuta neanche. – novalain
Sì, c'è ancora bisogno di fare ... –