2014-01-12 33 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