4

我正在从infoWindowinfoBox更好看的信息窗口。

我在地图上有许多标记。我想要做的是当一个infoBox已经打开时,如果用户点击其他标记,当前infoBox将自动关闭并infoBox打开新的,这样用户就不需要关闭当前infoBox,并且总是只有一个infoBox显示在一次。

这是我当前解决方案的演示和代码 http://jsfiddle.net/neo3000ultra/9jhAy/

提前致谢!

4

2 回答 2

10

更改此部分:

        google.maps.event.addListener(marker, "click", function (e) {
            ib.open(map, this);
        });

        var ib = new InfoBox(myOptions);

       google.maps.event.addListener(marker2, "click", function (e) {
            ib2.open(map, this);
        });

        var ib2 = new InfoBox(myOptions2);

到以下:

    var ib = new InfoBox();

    google.maps.event.addListener(marker, "click", function (e) {
        ib.close();
        ib.setOptions(myOptions)
        ib.open(map, this);
    });

   google.maps.event.addListener(marker2, "click", function (e) {
        ib.close();
        ib.setOptions(myOptions2)
        ib.open(map, this);
    });

对我有用,也在 IE9 中:http: //jsfiddle.net/doktormolle/9jhAy/1/

在打开信息框之前注意使用ib.close(),似乎是诀窍。

于 2012-06-06T15:38:36.153 回答
3

对单个信息窗口的通常建议是只创建一个,然后将其用于所有标记(更改其内容)。

这是一个使用 v3 API 执行此操作的示例(我认为它是“v2 信息窗口行为”,因为 v2 API 只允许单个信息窗口) http://www.geocodezip.com/v3_markers_normal_colored_infowindows.html

这是基于 Mike Williams 的 v2 教程的另一个示例: http ://www.geocodezip.com/v3_MW_example_map1.html

并且您的示例已修改:http: //jsfiddle.net/uGnQb/6/

于 2012-06-06T05:09:36.100 回答