Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌地图JavaScript问题_Javascript_Google Maps Api 3 - Fatal编程技术网

谷歌地图JavaScript问题

谷歌地图JavaScript问题,javascript,google-maps-api-3,Javascript,Google Maps Api 3,首先,提前感谢您抽出时间来帮助我,我感谢您的努力 我有一个谷歌地图api的问题,JavaScript版本3 我已经编写了以下代码 $('.adr').ready(function(){ initialize(); }) function initialize() { var myLatlng = codeAddress(); var myOptions = { zoom: 14, center: myLatlng,

首先,提前感谢您抽出时间来帮助我,我感谢您的努力

我有一个谷歌地图api的问题,JavaScript版本3

我已经编写了以下代码

    $('.adr').ready(function(){    

    initialize();

})

function initialize() {

    var myLatlng = codeAddress();

    var myOptions = {
      zoom: 14,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.SATELLITE
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);

  }

function codeAddress() 
{
    var geocoder = new google.maps.Geocoder();

    var address;
    var street = cropAdr($(".street-address").text());
    var city = cropAdr($(".locality").text());
    var state = cropAdr($(".region").text());
    var zip = cropAdr($(".zip").text()); 

    address = street + ", " + city + ", " + state + ", " + zip;    

    geocoder.geocode( {'address': address}, function(results, status) 
    {

      if (status == google.maps.GeocoderStatus.OK) 
      {
        var latlng = results[0].geometry.location;
        return latlng;
      }  
      else 
      {
        alert("Geocode was not successful for the following reason: " + status);        
        return null;
      }

    });
}



function cropAdr(args)
{
  var index = args.indexOf(":");
  var value = args.substr(index+1);

  return value;
}
但它不起作用

我已经检查了“results[0].geometry.location”返回值及其完美值,因此地址操作有效。“results[0].geometry.location”是一个google.maps.Latlng对象,但我尝试将co词作为字符串去掉,然后创建一个新的google.maps.Latlng对象,但没有骰子

然而,如果我手动复制该字符串并将该值粘贴到“var myLatlng=new google.maps.Latlng(在此处粘贴复制的字符串!)”中,整个过程都会成功


我看不出这个脚本还有什么错(为Jquery和JavaScriptpt的混乱道歉)

Google Maps API Geocoder接受一个函数,该函数将在地址进行地理编码后运行,但该函数可以异步调用,也就是说,在您的其余代码已经完成运行之后

在codeAddress中,调用地理编码器并通过以下行传入函数:

geocoder.geocode( {'address': address}, function(results, status)
然后尝试从传递给地理编码器的函数返回latLng,但这与从codeAddress返回值不同。从该函数内部返回的值将传递给geocoder对象,该对象将忽略它

您需要让传递给geocode的函数对latLng做些什么。例如,替换:

return latLng;
与:

一旦结果可用,地图应该以地理编码地址为中心


(要做到这一点,您需要将map对象设置为全局对象或以其他方式使其可用于codeAddress。我建议在代码顶部添加“var map;”,并在初始化中使用map之前删除“var”)

我已经尝试了您的建议,将var map;在屏幕顶部,从initialise()中的“Var映射”中删除Var,将“return latlng”更改为“map.setCenter(latlng)”;将原始的“Center:myLatlng”更改为(0,0)的预定义latlng对象,并尝试为null。也被称为codeAddress();地图初始化后,也尝试过。但什么都不管用…我解决了!你是对的,但当我启动地图中心原点时,它已经将Latlng,insread放在Latlng上,这导致了一个JS错误。。。谢谢你的帮助。
map.setCenter(latLng);