2013-08-04 70 views
0

我在做什麼錯了?我試圖從函數中檢索經度和緯度值,但我收到的是未定義的。從函數中檢索倍數值

var getPos = function() { 
    if (navigator.geolocation) 
    { 
    navigator.geolocation.getCurrentPosition(function(p) 
    { 
     var lat = p.coords.latitude, 
     lng = p.coords.longitude; 
     return [lat, lng];   
    }) 

    } 
} 

var co = getPos(), 
    la = co[0], 
    ln = co[1]; 
alert(la+ln); 
+1

你沒有返回任何東西。那個'return'在另一個範圍內。 – elclanrs

回答

1

navigator.geolocation.getCurrentPosition是異步的,這就是爲什麼你沒有收到任何東西,你可以使用一個回調並作用於返回的值,就像這樣:

var getPos = function(callback) { 
    if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(p) { 
     var rlat = p.coords.latitude, 
     lng = p.coords.longitude; 
     callback([lat, lng]);   
    }) 
    } 
}; 
getPos(function(lat, long) { 
    // do what you need with those 
}); 

你可以在the docs閱讀有關:

要獲取用戶的當前位置,可以調用getCurrentPosition()方法。這會啓動一個異步請求來檢測用戶的位置,並查詢定位硬件以獲取最新信息。

+0

嗨阿爾貝託,感謝您的回答,我在這個新的......我不明白如何從任何地方訪問我需要的值。就像我需要在一個點的座標,所以我問我的功能,我可以訪問 – allan

+0

您定義一個函數,並在需要時調用它,我沒有明白你的觀點,我願意幫助你,但請更加詳細一些。 –

+0

再次感謝,並對我的英語感到抱歉...我需要的是使一個函數,我可以從我的應用程序中的任何地方調用,並檢索我需要的時候使用的座標,例如當我需要加載地圖所以我只是調用函數並檢索這個可能的座標?並再次感謝您的良心和關注。 – allan