【问题标题】:google map - jquery window problem谷歌地图 - jquery 窗口问题
【发布时间】:2011-06-13 21:19:46
【问题描述】:

当我点击标记时总是显示相同的数据...为什么?

代码:

function load() 
{
  var dialog = $('<div>').dialog({autoOpen:false});
  var map = new google.maps.Map(document.getElementById("map"), 
  {
        center: new google.maps.LatLng(47.6145, -122.3418),
        zoom: 13,
        mapTypeId: 'roadmap'
  });
  var infoWindow = new google.maps.InfoWindow;


  // Change this depending on the name of your PHP file
  downloadUrl("phpsqlajax_genxml.php", function(data) 
  {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) 
    {
      var name = markers[i].getAttribute("name");
      var address = markers[i].getAttribute("address");
      var type = markers[i].getAttribute("type");
      var point = new google.maps.LatLng
                  (
                      parseFloat(markers[i].getAttribute("lat")),
                      parseFloat(markers[i].getAttribute("lng"))
                  );
      var html = "<b>" + name + "</b> <br/>" + address;
      var icon = customIcons[type] || {};
      var marker = new google.maps.Marker
                   ({
                       map: map,
                       position: point,
                       icon: icon.icon,
                       shadow: icon.shadow
                   });

     google.maps.event.addListener(marker, 'click', function() 
     {
         dialog.html(html).dialog('open');
     });
    }
 });

}

【问题讨论】:

  • infowindow如何与dialog关联?我看到你创建了一个 InfoWindow,但你从来没有用它做任何事情。然后在我希望看到 InfoWindow 代码的事件监听器中,我看到了对话框。什么关系?
  • 不,我不想看到信息窗口。我想查看 infowindow 的 jquery 窗口(对话框),但在 jquery 对话框中我看到相同的数据。请参阅kuponik.adriamart.com/davidimo.html
  • 上一条评论中link you posted 的地图上没有标记。
  • 请再看一遍,因为它是塞尔维亚、贝尔格莱德的标记,我没有把纬度和经度居中放在那个...只是缩小地图。
  • @adria:美国西部和东欧;你不能再分开了!大声笑...好的,我现在看到了。

标签: jquery google-maps infowindow openinfowindowhtml


【解决方案1】:

试试这个:

第一次改变

 google.maps.event.addListener(marker, 'click', function() {...});

google.maps.event.addListener(marker, 'click', dial(html));

第二次添加以下功能:

 function dial(html){
 return function(){
 dialog = $('<div>').dialog({autoOpen:false});
 dialog.html(html).dialog('open');
 }
 }

希望对你有帮助

K

【讨论】:

  • 你太棒了......非常感谢!
【解决方案2】:

更改这些行...

var marker = new google.maps.Marker

google.maps.event.addListener(marker, 'click', function() 

对这些...

var marker;
marker[i] = new google.maps.Marker

google.maps.event.addListener(marker[i], 'click', function() 

【讨论】:

  • 我认为只有将“var marker”移出“for”循环时才会起作用
  • 标记没有问题...问题是窗口显示所有标记的相同数据...
  • @adria:我意识到这不是标记问题,而是所有标记都应用了相同的对话框文本。
猜你喜欢
  • 2012-02-23
  • 2013-02-11
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2011-12-21
相关资源
最近更新 更多