WuZ*_*hua 15 android geolocation cordova
我已经使用cordova v3.4.1来构建android和ios应用程序,在ios geolocation函数返回非常快并且工作正常,但在android上,有时它无法正常工作.
奇怪的是我重新启动Android手机后,它运行正常.在不到几个小时的时间内,地理定位在wifi和3G上都很快得到了定位.
但是在serval小时之后,我再次打开应用程序,地理位置无法正常工作.有时当我在外面时,它可以获得gps卫星的位置,但很慢,经常发生超时错误.
我尝试删除应用程序并重新安装它,但问题仍然存在,除非重新启动我的Android手机.当我重新启动我的Android手机,地理位置功能在未来几个小时再次正常工作.
我有测试serval android的手机,如samsang note2,galaxy4等,他们都有同样的问题.当我重新启动它时,他们可以非常快速地获得位置.
这个问题困扰了我很长一段时间,所以有人帮助我?
这是我的代码如下:
navigator.geolocation.getCurrentPosition(function(pos){
cb(null,pos)
},function(errMsg){
navigator.geolocation.getCurrentPosition(function(pos){
cb(null,pos)
},function(errMsg){
cb(errMsg)
}, {
enableHighAccuracy: true,
timeout: 60*1000*2,
maximumAge: 1000*60*10
});
}, {
enableHighAccuracy: false,
timeout: 10*1000,
maximumAge: 1000*60*10
});
Run Code Online (Sandbox Code Playgroud)
我的config.xml:
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
Run Code Online (Sandbox Code Playgroud)
WuZ*_*hua 16
最后我已经解决了问题,现在我的Android手机,getCurrentPosition功能返回位置信息每次都很快,我再也不需要重启我的手机了!我不确定cordova v3.4.1的geoloation插件是否有错误.
发生这个问题的原因是我们总是使用浏览器的navigator.geolocation.getCurrentPosition函数来定位位置,所以我们必须让app使用cordova本机实现而不是html5.
这是cordova v3.4.1的解决方案,希望它可以帮助你,事实上它解决了我的问题.
解决步骤:
1.删除org.apache.cordova.geolocation
$ cordova plugin rm org.apache.cordova.geolocation
Run Code Online (Sandbox Code Playgroud)
2.reinstall一个新的org.apache.cordova.geolocation插件
$ cordova plugin add org.apache.cordova.geolocation
Run Code Online (Sandbox Code Playgroud)
3.将插件复制到e:\
进入插件文件夹,例如'YOUR_APP_FOLDER\plugins \'
将洞复制org.apache.cordova.geolocation到E:\org.apache.cordova.geolocation
4.再次删除插件
$ cordova plugin rm org.apache.cordova.geolocation
Run Code Online (Sandbox Code Playgroud)
5.edit plugin.xmlinE:\org.apache.cordova.geolocation\plugin.xml
编辑plugin.xml文件,如下所示:
... ...
<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">
... ...
Run Code Online (Sandbox Code Playgroud)
6.add插件再次
$ cordova plugin add E:\org.apache.cordova.geolocation
Run Code Online (Sandbox Code Playgroud)
7,运行build commond
$ cordova build android
Run Code Online (Sandbox Code Playgroud)
8.检查它是否正常工作
检查YOUR_APP\plugins\android.json必须包括:
{
"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
}
Run Code Online (Sandbox Code Playgroud)
检查YOUR_APP\platforms\android\AndroidManifest.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_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
Run Code Online (Sandbox Code Playgroud)
检查YOUR_APP\platforms\android\res\xml\config.xml必须包括:
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
</feature>
Run Code Online (Sandbox Code Playgroud)
9.运行应用程序
编写geelocation代码以获取lat和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
Run Code Online (Sandbox Code Playgroud)
});
如果您的手机支持使用wifi/3G定位,那么我们将立即获得位置,否则您将看到errMsg timeout,然后geolocation将使用gps定位与本机工具的位置.
现在我们得到了lat和lng,而且永远不需要重新启动android手机,谢天谢地.
如果仍有问题,请尝试安装插件以清理webview缓存:
https://github.com/moderna/cordova-plugin-cache
| 归档时间: |
|
| 查看次数: |
20092 次 |
| 最近记录: |