IBM Worklight 6.0 - WL.Device.Geo.acquirePosition 总是返回超时
Posted
技术标签:
【中文标题】IBM Worklight 6.0 - WL.Device.Geo.acquirePosition 总是返回超时【英文标题】:IBM Worklight 6.0 - WL.Device.Geo.acquirePosition always return timeout 【发布时间】:2013-07-27 04:15:42 【问题描述】:我正在 worklight 6.0 上构建一个应用程序,并且我正在尝试实现地理定位。
方法WL.Device.Geo.acquirePosition
总是返回
"code":3,"message":"位置检索超时。"
我按照以下步骤操作:
-
创建了一个新的工作灯项目
将此代码放在我的 javascript 文件中:
function wlCommonInit()
WL.Device.Geo.acquirePosition(positive, negative,
timeout : 30000,
enableHighAccuracy: true,
maximumAge:15000
);
function positive(data)
WL.Logger.debug("bbbbbbbbbbb2" + JSON.stringify(data));
function negativa(data)
WL.Logger.debug("aaaaaaaaaaaa" + JSON.stringify(data));
添加安卓环境
在androidManifest.xml中添加这两个权限:
使用权限 android:name="android.permission.ACCESS_COARSE_LOCATION" 使用权限 android:name="android.permission.ACCESS_FINE_LOCATION"
在 samsung s2 上运行 wifi 和 gps 的应用
我有什么遗漏的吗?
【问题讨论】:
【参考方案1】:我还会在 AndroidManifest.xml 中添加以下内容:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
并确保它也存在:
<uses-feature android:name="android.hardware.wifi" />
您是否尝试使用更高的超时值?
【讨论】:
我添加了此权限并将超时设置为 120 秒,但我仍然收到超时消息。 同时检查 Android 检查设置 -> 您已启用的位置服务使用无线网络,我还必须启用位置和 Google 搜索...【参考方案2】:请参阅此post 了解更多信息。
而不是做:
navigator.geolocation.getCurrentPosition(win, fail, opts);
你可以这样做:
var geo = cordova.require('cordova/plugin/geolocation');
geo.getCurrentPosition(win, fail,opts);
事实证明,您必须调用 Cordova 的本机模块才能在不重新启动的情况下完成这项工作。您可能解决了这个问题或忘记了,但可能会帮助其他人。
【讨论】:
【参考方案3】:我也遇到了这个问题,这是因为我在移动设备 Geo 准备好之前使用了 WL API。
在我的例子中,我从谷歌地图示例代码中复制了代码,它初始化了所有内容:
google.maps.event.addDomListener(window, 'load', initializeMap)
然后在 initializeMap() 方法中我尝试使用 WL.Device.Geo.acquirePosition 方法。
您必须在 wlCommonInit() 方法中调用 initializeMap 方法,而不是在“windows 加载事件侦听器”中,这样当设备 GEO 准备好时,将完成对 WL.Device.Geo.acquirePosition() 的调用。
还要检查 Android 检查设置 -> 已启用的位置服务使用无线网络,我还必须启用位置和 Google 搜索...
【讨论】:
以上是关于IBM Worklight 6.0 - WL.Device.Geo.acquirePosition 总是返回超时的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight 6.0 - 访问 Worklight Server 时出错
IBM Worklight 6.0 - Worklight Starter Dojo 示例损坏?
IBM Worklight 6.0 - 如何将 Worklight 应用程序部署到 Worklight Server?
IBM Worklight 6.0 - 无法访问 Worklight 服务器