我正试图从Google Geocoder获取lat和long信息,但是虽然在正在进行的调用中正确提取了信息,但由于某种原因,js变量在获得我的第二个警报之后立即变为空代码(“if”条件之外的代码):
var map, marker, latLong;
var geocoderlat = new google.maps.Geocoder();
var addresslat = '<?php echo str_replace(" ","+",$address);?>';
function initMap() {
geocoderlat.geocode( { 'address': addresslat}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latLong = results[0].geometry.location;
alert("Inside IF: "+latLong);
} else {
latLong = '<?php echo $latitude.",".$longitude;?>';
}
})
alert("Outside: "+latLong);
var isDraggable = !('ontouchstart' in document.documentElement);
var mapOptions = {
center: new google.maps.LatLng(latLong),
zoom: 12,
(...)
显然除了这部分之外还有很多代码,但是在这种情况下代码的其余部分并不重要,因为这个变量永远不会在我的代码中的任何地方再次使用(我甚至用代理Ransack搜索了整个文件,所以确定此变量未在其他任何地方使用。)
编辑:
好的,这真的非常奇怪......
function getGeoLatLong(addresslat) {
geocoderlat.geocode( { 'address': addresslat}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
return results[0].geometry.location;
} else {
return '<?php echo $latitude.",".$longitude;?>';
}
})
}
alert("Outside function: "+getGeoLatLong(addresslat));
这仍然会在警报中返回“undefined”。