database - 带有选项卡的信息窗口 (Infobubble) 仅显示最后添加的标记的内容(通过 PHP/Mysql))

标签 database tabs maps infobubble

好的,我一直在努力实现 Infobubbles with tabs在填充有许多标记的 map 上,通过 ajax 调用(使用 this tutorial from Google 构建)从 Mysql 数据库中恢复。

点击事件对每个标记都 react 良好,但问题是每个信息气泡在选项卡中显示相同的 html 内容,我猜是从最后添加的标记开始......一定有关闭问题,但我觉得目前完全没用,这让我发疯!感谢您提供的任何帮助...

function init() {

    var mapCenter = new google.maps.LatLng(48.204612, 7.419058);
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 9,
      center: mapCenter,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var infoBubble = new InfoBubble({
        map: map,
        maxWidth: 300,
        disableAnimation: true
    });

    // Get markers and info from the database
downloadUrl("phpsqlajax_genxml3.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 description = markers[i].getAttribute("description");
        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,
        title: name,
        position: point,
        icon: icon.icon,
        shadow: icon.shadow,
        });

        google.maps.event.addListener(marker, 'click', function() {
        if (!infoBubble.isOpen()) {
        infoBubble.open(map, this); 
        }
        });

        google.maps.event.addListener(map, "click", function(){
        infoBubble.close();
        });
    }

infoBubble.addTab('Tab1', html);
infoBubble.addTab('Tab2', description);

});
}

最佳答案

因为您的 infoWindow 仅在代码执行开始时创建一次。需要将infoWindow的初始化放在click事件中或者使用setContent方法修改被点击标记上的内容

关于database - 带有选项卡的信息窗口 (Infobubble) 仅显示最后添加的标记的内容(通过 PHP/Mysql)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326021/

相关文章:

database - 相当于postgresql的非开源数据库

Android:如何在使用 ViewPager 滚动页面时更改菜单项?

r - TMAP 上的多个层

android - 为 Here 自动完成 api(和反向地理编码)设置语言环境

javascript - Google map 自动完成 this.setValues 不是函数

C#:MySQL 异常未处理

java - OpenJPA:从数据库自动构建实体的代码

mysql - MySql 表中的重复索引

ios - pagemenu-navigation 右栏按钮项(不能按tabs隐藏)

cocoa - 如何控制模式对话框的 Tab 键顺序(键 View 循环)?运行模式窗口 : ignores nextKeyView