我一段时间没有用js写过,显然有点生疏了。试图了解以下问题。 getCurrentPosition successCallback
中的提醒正确显示了纬度,但最后一行提醒undefined
。为什么我的client_location函数在函数外部调用时返回纬度?
client_location = function() {
if (navigator.geolocation) {
return navigator.geolocation.getCurrentPosition(function(position) {
alert(position.coords.latitude); ## RETURNS LATITUDE CORRECTLY ##
return position.coords.latitude;
});
}
};
alert(client_location()); ## RETURNS UNDEFINED ##
答案 0 :(得分:3)
您正在将回调传递给getCurrentPosition
,并且您的alert
位于该回调中。你的return position.coords.latitude
也在回调中。您的client_location
函数会返回getCurrentPosition
次返回和getCurrentPosition
doesn't return anything。
如果你想用纬度做某事,你必须在你的回调中做;你可以像这样回复client_location
:
client_location = function(callback) {
if (navigator.geolocation) {
return navigator.geolocation.getCurrentPosition(function(position) {
callback(position.coords.latitude);
});
}
};
client_location(function(lat) {
alert(lat);
});
答案 1 :(得分:0)
如果设备未返回地理位置,则未定义。 添加else语句来处理没有地理位置。
client_location = function() {
if (navigator.geolocation) {
return navigator.geolocation.getCurrentPosition(function(position) {
alert("clientLocation: "+position.coords.latitude);
return position.coords.latitude;
});
}else{
return("no navigator.geolocation");
}
};
alert(client_location());