Schließlich habe ich das Problem lösen, jetzt auf meinem Android-Handy, getCurrentPosition
Funktion Infomationen Rückkehrort sehr schnell alle Zeit, ich brauche nie wieder mein Telefon neu zu starten! Ich bin mir nicht sicher, ob das geoloation Plugin von cordova v3.4.1 Bugs hat.
Der Grund dieses Problem auftritt ist, dass wir immer Browsers verwenden navigator.geolocation.getCurrentPosition
Funktion der Postion zu lokalisieren, also müssen wir app Verwendung cordova native Implementierung statt html5 lassen.
Hier ist die Lösung mit Cordova v3.4.1, hoffe, es kann Ihnen helfen, in der Tat hat es meine Frage gelöst.
lösen Schritt:
1.remove die org.apache.cordova.geolocation
$ cordova plugin rm org.apache.cordova.geolocation
2.reinstall eine neue org.apache.cordova.geolocation Plugin
$ cordova plugin add org.apache.cordova.geolocation
3 Kopieren Sie das Plugin zu e: \
Geben Sie den Plugin-Ordner ein, z. B. 'YOUR_APP_FOLDER \ plugins \'
kopieren Sie das Loch org.apache.cordova.geolocation
-E:\org.apache.cordova.geolocation
4.Remove das Plugin wieder
$ cordova plugin rm org.apache.cordova.geolocation
5.Bearbeiten die plugin.xml
in E:\org.apache.cordova.geolocation\plugin.xml
bearbeiten das Plugin.XML-Datei wie folgt:
... ...
<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 wieder Plugin
$ cordova plugin add E:\org.apache.cordova.geolocation
7, laufen build commond
$ cordova build android
8.Achten Sie darauf, wenn es
Scheck YOUR_APP\plugins\android.json
muss gut funktionieren enthalten:
{
"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
muss Folgendes enthalten:
<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
muss Folgendes enthalten:
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
9.run die App
den geelocation Code schreiben lat und lng zu erhalten:
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
});
Wenn Ihr Telefon Unterstützung verwenden wifi/3G suchen, dann werden wir sofort Standort erhalten, sonst sehen Sie die errMsg timeout
und dann geolocation
wird GPS verwenden, um Position mit nativen Gerät zu lokalisieren.
jetzt bekommen wir die lat und lng, und brauchen nie das android phone agian neu starten, zum glück.
, wenn Sie immer noch das Problem haben, versuchen Sie das Plugin zu installieren, um die Webansicht Cache zu reinigen:
https://github.com/moderna/cordova-plugin-cache
Dieses Problem ist immer noch auf PG 3.5 und Ihre Lösung funktioniert immer noch! – rodripf
Müssen wir das alles noch in PG 5.1.1 machen? Meistens funktioniert die navigator.geolocation.getCurrentPosition() überhaupt nicht auf meinem Android-Gerät.Ein Neustart hilft auch nicht. – novalain
Ja, muss noch tun ... –