0

我有两个多边形:bigsmall-小的包含在大的里面。

我是否执行:

//show big, then small...
big.setMap(null);
big.setMap(map);
small.setMap(null);
small.setMap(map);

或者我执行:

//show small, then big...
small.setMap(null);
small.setMap(map);
big.setMap(null);
big.setMap(map);

我总是以顶部的大多边形结束。这意味着,我无法在小多边形上接收鼠标事件,因为它被大多边形隐藏了。

Google Maps V3 API 如何管理多边形的 Z-Index?我想我将不得不在较大的多边形上钻一个洞,让较小的多边形发光……但如果有更优雅的解决方案,我宁愿不这样做。

4

2 回答 2

4

zIndex 似乎没有特别的管理,类似于 HTML 文档中的元素,文档中定义多边形的元素的顺序将影响行为,当您使用多个多边形而不设置 zIndex 时,稍后创建的多边形将出现在现有多边形上方。

覆盖此行为的已实施解决方案是设置多边形的 zIndex 属性,给出small高于zIndexbig

于 2013-04-29T10:29:27.643 回答
1

你的多边形是完全不透明的,还是有一些透明度?

如果它们是不透明的,您可以使用Molle 博士指出zIndex的对象上的。Polygon

如果它们是部分透明的,那可能不会产生您想要的效果 - 除非您确实希望多边形填充颜色是 alpha 混合的。

如果您不希望填充颜色混合,那么您确实需要在较大的多边形上切一个洞。不过,这真的很简单。您只需向较大的多边形添加第二个环,并为其赋予与较小多边形相同的坐标,但坐标的顺序相反。您可以复制一个数组并使用以下命令反转副本:

var reversed = [].concat(array).reverse();

这是一个带有孔的多边形示例。

于 2013-04-29T10:44:38.593 回答