这是一个简单的问题,我在一个对象中有以下方法,为什么它返回undefined?
var getGeoLocation = function() {
if (typeof(navigator.geolocation) != 'undefined') {
var test = navigator.geolocation.getCurrentPosition(function(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
return(new google.maps.LatLng(lat, lng));
});
}
}
var testFunction = function() {alert(getGeoLocation()); // returns undefined?}
答案 0 :(得分:7)
这是因为navigator.geolocation.getCurrentPosition
是异步的。 getGeoLocation
函数在传递给getCurrentPosition
的匿名回调函数执行之前返回,并且由于getGeoLocation
函数没有return
语句,它返回undefined
。
根据回调中的navigator.geolocation.getCurrentPosition
移动取决于响应的代码。
答案 1 :(得分:2)
它返回undefined,因为getGeoLocation不返回任何内容。试试这个:
var getGeoLocation = function() {
if (typeof(navigator.geolocation) != 'undefined') {
var test = navigator.geolocation.getCurrentPosition(function(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
alert(new google.maps.LatLng(lat, lng));
});
}
}
var testFunction = function() {getGeoLocation()};
答案 2 :(得分:0)
function GetCurrentLocation()
{
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var point = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
alert(point);
}
else {
alert('W3C Geolocation API is not available');
}
}
使用此代码。它会给你完美的结果。