JS变量没有任何理由“消失”并变空

时间:2016-04-09 12:47:19

标签: javascript google-maps

我正试图从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”。

0 个答案:

没有答案