Javascript 谷歌地图API v3

Javascript 谷歌地图API v3,javascript,google-maps,google-maps-api-3,geocoding,Javascript,Google Maps,Google Maps Api 3,Geocoding,我面临着谷歌地图代码的问题。我正试图从阵列中在地图上放置标记。但是当我尝试做同样的事情时,我被夹在了中间。我的firebug控制台给了我一个错误,结果没有在函数createMarkers中定义。这是我的密码: <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script> var addresses = new

我面临着谷歌地图代码的问题。我正试图从阵列中在地图上放置标记。但是当我尝试做同样的事情时,我被夹在了中间。我的firebug控制台给了我一个错误,结果没有在函数createMarkers中定义。这是我的密码:

    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var addresses = new Array();
abc = document.getElementsByTagName('td');
//loc = mydiv.getAttribute("data-addr");
var l = abc.length; 
 for (var i=0; i < l; i++){
    if (abc[i].hasAttribute('name'))
    {   
        addresses.push("'"+abc[i].innerHTML+"'");
    }   
}
var len = addresses.length;
var geocoder;
var map;
var add = document.getElementById("addr").value;
window.onload = function init() {

      geocoder = new google.maps.Geocoder();    
      var add = document.getElementById("address").value;
      var latlng = codeAddress(add);
      var myOptions = {
        zoom: 10,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      map = new google.maps.Map(document.getElementById("map_canvas"),
          myOptions);
}

//for (var i = 0; i < addresses.length; i++)
//{
    function codeAddress(add) 
    {
      //var addr = addresses[i];
      geocoder.geocode( { 'address':add }, function(results, status) {

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

    function createMarkers()
    {
        for(var i = 0; i < len; i++){
            (function(addresses){
                geocoder.geocode( { 'address': addresses }, function(results) {
                    var marker = new google.maps.Marker ({
                        map: map,
                        position: results[0].geometry.location,//error:results[0] is undefined
                        title: address
                    }); 

                    google.maps.event.addListener(marker, 'click', function() {
                        alert(addresses);
                    });
                });
            })(addresses[i]);
        }
    }
    window.onload = createMarkers;
</script>

var addresses=新数组();
abc=document.getElementsByTagName('td');
//loc=mydiv.getAttribute(“数据地址”);
var l=abc长度;
对于(变量i=0;i
经过与代码的长期斗争,我找到了解决方案。我所面临的错误是因为我以错误的格式将地址推入数组,即,我使用
将地址推入数组(单引号)
,地理编码员不接受。因此,最后编辑了我推送地址的loc。修改后的代码如下:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var addresses = new Array();
abc = document.getElementsByTagName('td');
//loc = mydiv.getAttribute("data-addr");
var l = abc.length; 
 for (var i=0; i < l; i++){
    if (abc[i].hasAttribute('name'))
    {   
        addresses.push(""+abc[i].innerHTML+""); //removed single quotes here. see previous code
    }   
}
var len = addresses.length;
var geocoder;
var map;
var add = document.getElementById("addr").value;
window.onload = function init() {

      geocoder = new google.maps.Geocoder();    
      var add = document.getElementById("address").value;
      var latlng = codeAddress(add);
      var myOptions = {
        zoom: 10,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      map = new google.maps.Map(document.getElementById("map_canvas"),
          myOptions);
}

//for (var i = 0; i < addresses.length; i++)
//{
    function codeAddress(add) 
    {
      //var addr = addresses[i];
      geocoder.geocode( { 'address':add }, function(results, status) {

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

    function createMarkers()
    {
        for(var i = 0; i < len; i++){
            (function(addresses){
                geocoder.geocode( { 'address': addresses }, function(results) {
                    var marker = new google.maps.Marker ({
                        map: map,
                        position: results[0].geometry.location,//error:results[0] is undefined
                        title: address
                    }); 

                    google.maps.event.addListener(marker, 'click', function() {
                        alert(addresses);
                    });
                });
            })(addresses[i]);
        }
    }
    window.onload = createMarkers;
</script>

var addresses=新数组();
abc=document.getElementsByTagName('td');
//loc=mydiv.getAttribute(“数据地址”);
var l=abc长度;
对于(变量i=0;i
您是否尝试过
console.log(results)
查看它实际包含的内容?@winterblood Ya我尝试过。它给出的“结果未定义”您是否也检查了以确保
地址
在您的内部函数中有值?@winterblood Ya Sry实际上
地址
应该在函数中传递,而不是
地址
,因为地址是我的数组,其中包含要在地图上创建标记的地址。我已经编辑了代码,但问题仍然存在ils.检查此项。您没有正确初始化映射。调用
新建google.maps.LatLng(…)
丢失。它@geocodezip Ok。可能是,但它对我不起作用。它只在我删除那些
单引号时起作用。
。问题是地址将进行地理编码,但
createMarkers
函数将产生问题。