【问题标题】:Issue with infowindows remaining active when another KML layer is selected - Google Maps API V3选择另一个 KML 图层时信息窗口保持活动状态的问题 - Google Maps API V3
【发布时间】:2012-05-24 14:01:40
【问题描述】:

我使用勾选框将多个 kml 图层加载到我的 Google Map API V3 中。选择两个或多个图层时,单击其他图层上的标记时,一个图层上的信息窗口不会自动折叠。我希望信息窗口自动关闭,即使它们位于不同的 KML 图层上 - 任何指向正确方向的指针都会有所帮助。

谢谢

达伦·威尔逊

【问题讨论】:

  • 但是您可以同时打开多个信息窗口。是什么让您认为观察到的行为是错误的?或者你是说它没有错,但你如何绕过它?
  • 你好 Andrew,我只希望一次打开一个信息窗口,即使通过不同的层激活。
  • @DarrenWilson InfoWindows 是由您的代码打开还是您在谈论由 KmlLayer 直接提供的 InfoWindows?
  • 嗨,肖恩,直接来自 KML 层!

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


【解决方案1】:

您需要禁用默认信息窗口创建并在代码中自己处理信息窗口。这是一个例子:

var CommonInfoWindow = new google.maps.InfoWindow({"maxWidth": 500});

/** @param {...*} KmlMouseEvent */
function KmlLayerClicked(KmlMouseEvent) {
  var ClickData = /** @type {google.maps.KmlMouseEvent} */(KmlMouseEvent);

  CommonInfoWindow.close();

  if (ClickData.featureData && ClickData.featureData.id) {
    CommonInfoWindow.setOptions({ "position": ClickData.latLng,
        "pixelOffset": ClickData.pixelOffset,
        "content": ClickData.featureData.infoWindowHtml
    });
    CommonInfoWindow.open(map);
  }
}

/** @type {google.maps.KmlLayer} */
var KmlOverlay = new google.maps.KmlLayer(KmlUrl, {
    'preserveViewport': true,
    'suppressInfoWindows': true
});
google.maps.event.addListener(KmlOverlay, "click", KmlLayerClicked);

【讨论】:

  • 嗨,Chad,谢谢你 - 我试了一下,但还是没用。 InfoWindows 由 KML 层提供。真的很感谢代码!谢谢。
  • 您当时错过了添加此选项:'suppressInfoWindows': true。为此,您必须告诉 api 不要生成自己的 infoWindows。
  • 建议的编辑是您自己的吗?目前是匿名的。
  • 我对编辑没意见(尽管我没有成功)。该代码有许多变体,具体取决于正在加载的 KML 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
  • 2012-05-27
  • 2013-10-17
  • 2013-06-28
  • 2013-06-27
  • 2011-02-20
相关资源
最近更新 更多