2013-07-26 129 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的檢查在設置 - >已啓用使用無線網絡的位置服務和我有也使位置和谷歌搜索...

相關問題