我只是找不到这段代码有什么问题:
function getLocationName(latitude, longitude) {
if (isNaN(parseFloat(latitude)) || isNaN(parseFloat(longitude))) {
return false;
}
var locationName;
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(latitude, longitude)
// Reverse Geocoding using google maps api.
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
locationName = results[1].formatted_address;
alert(locationName);
}
else {
locationName = "Unknown";
}
}
else {
locationName = "Couldn't find location. Error code: " + status;
}
});
alert(locationName);
return locationName;
}
我从这样的 jquery 事件处理程序中调用它:
$("#id").on("event", function (event, ui) {
$("#userLocation").text(getLocationName(latitude, longitude));
});
奇怪的是,第一个警报获得了“locationName”的正确值,但第二个警报总是返回“未定义”。我尝试用一个值初始化变量,在这种情况下,第一个警报再次返回正确的位置名称,但第二个警报返回了初始化值。这给了我一个概念,这可能是一个与变量范围相关的问题,但我不知道是什么。
PS。我没有任何其他同名变量(本地/全局)。
更新:警报现在工作正常(感谢 Lwyrn 的回答),但返回值仍然错误。我已经按照链接的 SO 问题中的答案进行了操作,但仍然无法“返回”正确的值。警报确实工作正常。