2012-07-06 45 views
1

我有一個簡單的代碼,在一個java代碼中使用javascript(使用google的GWT),所以我想要做的就是獲取用戶的緯度並傳遞編號返回到Java代碼,以便我可以對其進行一些計算。在GWT中使用JavaScript獲取用戶位置,但變量沒有通過

但是,我無法將變量x = position.coords.latitude返回到我的Java代碼,因爲即使當我調用alert(x)時,它也會在我的屏幕上顯示正確的緯度,當我嘗試返回它,x仍然是null,沒有任何反應。

public static native Number findlatitude() /*-{ 
    var x; 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function (position) { 
      x = position.coords.latitude; 
      alert(x); 
     }); 
    } 
    return x; 
}-*/; 
+0

的JavaScript在Java中? o.O'Java-ception' – 2012-07-06 04:37:43

+0

您是否嘗試過將函數的返回類型設置爲字符串,這是否仍然爲null? – pgfearo 2012-07-06 05:00:13

+0

我試圖改變返回類型爲字符串,它仍然打印null :( – noobiehacker 2012-07-06 08:56:53

回答

0

而不是從函數返回x的值,你可以的

position.coords.latitude 

值分配給這可以通過調用函數訪問的變量。這樣,該變量的賦值就會一直存在。 有些事情是這樣的: 編輯

var b; 
function callingFunction(){ 
    findLocation(); 
    //your stuff 
} 
function floc(position){ 
    b = position.coords.longitude; 
} 
function findLocation(){ 
    navigator.geolocation.getCurrentPosition(floc); 
} 

callingFunction(); 
+0

嗨Digvijay Yadav,我試過你的解決方案,它仍然返回null爲某種原因,我不知道爲什麼B不分配給新值GWT – noobiehacker 2012-07-06 09:00:31

+0

@noobiehacker:我已經編輯了我的答案,試試這個方法,它適用於我 – 2012-07-06 09:53:11

+0

嗨Digvijay Yadav感謝回覆,但是當我嘗試添加alert(b)後,調用函數()後,我仍然無法顯示緯度,它仍然顯示爲空 – noobiehacker 2012-07-06 11:01:45