【问题标题】:Google Maps v3 API: KML layer messing with click, mouse eventsGoogle Maps v3 API:KML 层与点击、鼠标事件混淆
【发布时间】:2010-08-15 11:20:37
【问题描述】:

我正在开发一个项目,在创建了一些用于创建多边形并将鼠标事件附加到它们的代码之后,添加 KML 层(主要是地标)会导致 KML 层的占位符与生成的多边形。

如果我先创建多边形然后设置 KML 文件,单击地标会按预期显示信息窗口 ()。但是,鼠标悬停在下面的多边形上不会产生任何结果,而在它们被突出显示并且可以点击之前(它们不是)。

将 KML 图层设置为 null 也无济于事。地标消失了,但我的多边形没有注册。

当我第一次使用地标调用 KML 时,稍后调用的多边形图层位于地标之上。多边形是不透明的,因此您可以像通过窗口一样查看地标,但无法单击或与地标交互。

将多边形设置为 null 会导致与以前相同的行为。仍然无法点击占位符。

帮助?我找不到 KML 层代码的 zIndex 参考,我希望就是这样。我在其他地方读到 - 并想象这是真的 - KML 和用户生成的内容“层”相互冲突 - 放在地图上的后一个会聚焦,捕捉事件等。我会认为没关系,就像您可以将 div 放在其他 div 之上一样,尤其是在您使用索引的情况下。

【问题讨论】:

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


    【解决方案1】:

    如果您只是想在 KML 层中显示信息而不让它对用户事件做出反应,您可以将 suppressInfoWindows 标志添加到构造函数中:

     var myKmlLayer = new google.maps.KmlLayer('http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml', { suppressInfoWindows: true });
    

    这将有效地关闭所有交互并让您的其他层接收交互。

    编辑:忘了提到一个很好的信息来源是Google API V3 site discussing KML layers

    【讨论】:

    • 谢谢托尼。问题是,我确实想要 KML 层的 InfoWindows - 否则,它们只不过是数据点。我想我可以尝试创建 Infopoints 并在 KML 层上模拟它们,但那时只生成标记会更容易。
    猜你喜欢
    • 2010-12-06
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多