【问题标题】:Google-maps:Displaying address in infowindow谷歌地图:在信息窗口中显示地址
【发布时间】:2012-10-08 06:39:53
【问题描述】:

我正在尝试实现带有显示地址的信息窗口.. 下面是我的代码

    $('#citiesdata').empty(); 

    var listFavourite = [];

    $(responce).find("favorite").each(function() {
      var name = $(this).find("name").text();
      var address = $(this).find("address").text(); 
      var phoneNo = $(this).find("phoneNo").text();
      var lattitude = $(this).find("lattitude").text();
      var longitude = $(this).find("longitude").text();

      var favouriteObject = new Object();
          favouriteObject.name = name;
              favouriteObject.address = address;
              favouriteObject.lattitude = lattitude;
              favouriteObject.longitude = longitude;
          listFavourite.push(favouriteObject);

      $('#citiesdata').append('<tr><td><b>'+name+'</b></td></tr>');
      $('#citiesdata').append('<tr><td>'+address+'</td></tr>');
      $('#citiesdata').append('<tr><td>'+phoneNo+'</td></tr>');



    });
    //call map service to load map with marker
    //method name(listFavourite);
  var content =   "<div id='tabs'>"+
                                "<form id='button'>"+
                                "<div>"+
                                "<input type='button' value='click me' onclick='alert(\"infoWindow\")'>"+
                                "</div>"+
                                "</form>"+
                            "</div>";

         var map = new google.maps.Map(document.getElementById("map_canvas"), {
               mapTypeId: google.maps.MapTypeId.ROADMAP,
               streetViewControl: false
        });
         var infowindow = new google.maps.InfoWindow({
         //content: content
        });

       for (var n = 0 ; n <listFavourite.length ; n++)
           addMarker(listFavourite[n]);
       }


       function addMarker(data) {
           var marker = new google.maps.Marker({
               position: new google.maps.LatLng(data.lattitude, data.longitude),
               map: map,
               title: data.address
           });
           google.maps.event.addListener(marker, "click", function() {
               infowindow.setContent(data.address);
               infowindow.open(map, marker);
           });

       };

我在这里从数组列表中获取数据(地址)..我想在 infowindows 中显示该地址..谢谢

【问题讨论】:

  • 更改了 infowindow.setContent(content);到 infowindow.setContent(data.address);但是所有标记都重复相同的地址......有什么线索吗?

标签: javascript google-maps-api-3 infowindow


【解决方案1】:

您需要在单独的函数中创建标记:

for (var n = 0 ; n <listFavourite.length ; n++)
    addMarker(listFavourite[n]);
}


function addMarker(data) {
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(data.lattitude, data.longitude),
        map: map,
        title: data.address
    });
    google.maps.event.addListener(marker, "click", function() {
        infowindow.setContent(data.address);
        infowindow.open(map, marker);
    });

};

【讨论】:

  • 集成了您的代码,但出现了愚蠢的错误:未捕获的 RangeError:超出了最大调用堆栈大小
  • 你错误地集成了它。编辑您的问题以反映您的完整当前代码,包括 listFavourite 数组的内容
  • 创建地图对象时需要指定中心并放大地图选项。如文档中所述,这两个参数都是必需的。
  • 想象一下,我不会整天花在这个问题上。更新您的代码并描述您在 javascript 控制台上遇到的错误。 'itz' 是什么意思?
  • 这里是完整的代码:pastebin.com/XipTahb6 in the console iam gettinh infowindow is not defined
猜你喜欢
  • 2016-12-21
  • 2012-02-18
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2018-02-24
  • 2013-09-13
  • 2013-06-08
  • 2014-10-15
相关资源
最近更新 更多