我正在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));
}
添加Android环境
在AndroidManifest.xml中添加这两个权限:
uses-permission android:name =“android.permission.ACCESS_COARSE_LOCATION”
uses-permission android:name =“android.permission.ACCESS_FINE_LOCATION”
使用wifi和gps在samsung s2上运行应用程序
有什么我想念的吗?
答案 0 :(得分: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" />
您是否尝试使用更高的超时值?
答案 1 :(得分:0)
有关详细信息,请参阅此post。
而不是:
navigator.geolocation.getCurrentPosition(win, fail, opts);
你可以这样做:
var geo = cordova.require('cordova/plugin/geolocation');
geo.getCurrentPosition(win, fail,opts);
事实证明,您必须调用Cordova的本机模块才能在不重新启动的情况下完成此工作。你可能已经解决了这个问题或忘记了,但可能会帮助其他人。
答案 2 :(得分:0)
我也遇到了这个问题,因为我在移动设备Geo准备好之前就使用了WL API。
在我的情况下,我复制了谷歌地图示例代码中的代码,并使用以下内容初始化所有内容:
google.maps.event.addDomListener(window, 'load', initializeMap)
然后在initializeMap()方法中我尝试使用WL.Device.Geo.acquirePosition方法。
您必须在wlCommonInit()方法中调用initializeMap方法,而不是在“Windows加载事件侦听器”中调用,这样在设备GEO准备就绪时将完成对WL.Device.Geo.acquirePosition()的调用。
同时检查Android检入设置 - &gt;您已启用的位置服务使用无线网络,我还必须启用位置和Google搜索...