2014-01-12 44 views
0

我想使用HTML5獲取當前位置並將其與javascript結合使用。 我做了一些測試,它的工作原理,但與我的最終版本我有一個undefined值。使用html獲取當前位置並使用javascript

function geolocError(dueToBrowser=true){ 
    if(dueToBrowser){ 
     alert('your browser does not support HTML5 geolocation'); 
    }else{ 
     alert('error with geolocation'); 
    } 
} 



function getPositon(){ 
    return navigator.geolocation.getCurrentPosition(function(position){ 
     return position.coords; 
    }, geolocError); 
} 

$(document).ready(function() { 



    if(navigator.geolocation) { 
     var pos = getPositon(); 

     console.log(pos) 
} 
}); 

我的console.log(pos);返回我"undefined"

回答

1

地理定位是異步的,你不能這樣做。你應該設置邏輯getCurrentPosition回調或使用延期對象:

參見例如jsFiddle

var defer = $.Deferred(); 

function getPositon() { 
    navigator.geolocation.getCurrentPosition(function (position) { 
     defer.resolveWith(position.coords); 
    }, geolocError); 
    return defer; 
} 

$(document).ready(function() { 
    if (navigator.geolocation) { 
     getPositon().done(function() { 
      console.log(this); 
     }); 
    } 
}); 
+0

感謝它的工作原理,但它是一個壞消息。我曾想過在加載每個頁面時都有位置。例如,我想用我的位置發表評論,但我不希望用戶等待發布它的請求:(這是一個解決方案,以存儲位置在cookie中? – billyJoe

+0

設置cookie內完成()回調 –

+0

我'我使用sessionStorage而不是cookie – billyJoe