出于某种原因,即使我在getCurrentPosition的回调函数中显式分配了变量,但对它发出警报时我的“ initialLocation”变量却未定义。
全局声明变量“ initialLocation”。

也许我不了解这种封闭的概念?

var initialLocation;

if (navigator.geolocation) {
    geoLocationError = true;
    navigator.geolocation.getCurrentPosition(function(position) {
        initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        getFood();
        }, geoError);
    alert(initialLocation);
} else {
    geoLocationError = false;
    noGeolocation(geoLocationError);
}

最佳答案

navigator.geolocation.getCurrentPosition是异步的,因此在设置initialLocation之前会触发警报。设置initialLocation后,应将警报放置在回调中。

07-28 06:35