2013-07-26 104 views
0

我在worklight 6.0上构建应用程序,并试图实现地理定位。IBM Worklight 6.0 - WL.Device.Geo.acquirePosition始终返回超时

WL.Device.Geo.acquirePosition总是返回

的方法,{ “代码”:3, “消息”: “位置检索超时。”}

我遵循下列步骤:

  1. 创建一个新的工作灯项目
  2. 将此代码放在我的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)); 
    } 
    
  3. 添加一个Android环境

  4. 在AndroidManifest.xml中添加这两个权限:

    使用许可权的android:NAME = “android.permission.ACCESS_COARSE_LOCATION”
    使用许可权的android :name =“android.permission.ACCESS_FINE_LOCATION”

  5. 在带有wifi和gps的三星s2上运行该应用程序

有什么我失踪?

回答

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" /> 

你尝试用更高的超时值?

+0

我加入这个权限,并把超时为120秒,而且我仍然收到超时消息。 – user2449016

+0

还检查安卓检查设置 - >您已启用的位置服务使用无线网络,我不得不启用位置和谷歌搜索... – Jxadro

+0

这有帮助,谢谢! –

0

查看此post欲知更多信息。

而不是做的:

navigator.geolocation.getCurrentPosition(win, fail, opts); 

你可以这样做:

var geo = cordova.require('cordova/plugin/geolocation'); 
geo.getCurrentPosition(win, fail,opts); 

原来你必须调用科尔多瓦的本机模块,使这项工作,无需重新启动。你可能已经解决了这个问题或忘记了,但可能会帮助其他人

0

我也遇到过这个问题,这是因为我在移动设备地理位置准备好之前使用了WL API。

在我来说,我复制了谷歌地图的示例代码的代码,并将其与初始化一切:

google.maps.event.addDomListener(window, 'load', initializeMap) 

然后在initializeMap()方法是我试图用WL.Device.Geo.acquirePosition方法。

您必须在wlCommonInit()方法中调用initializeMap方法,而不是在“窗口加载事件侦听器”中调用WL.Device.Geo.acquirePosition()时,设备GEO准备就绪。

还要检查在Android的检查在设置 - >已启用使用无线网络的位置服务和我有也使位置和谷歌搜索...

相关问题