将KMZ文件添加到我的Google地图中时,有没有办法将图像叠加层叠在多边形上方?

时间:2015-02-17 23:12:42

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

我的网站上有一个谷歌地图页面,我想加载一系列显示土地块的KMZ文件。我在谷歌地球中生成了由图像叠加和一系列多边形组成的KMZ。我首先加载图像叠加,这是一个由黑色线条和透明背景组成的PNG - 这显示了土地的边界线。然后我在此图像上绘制多边形以分组相关的图。在从Google地球导出KMZ之前,我确保图像显示在多边形上方的前景中。但是,在将KMZ导出并加载到我的网页上的Google地图后,图像叠加在后面加载,多边形分层在顶部,遮挡了图像中显示的边界线细节。

我已尝试在Google地球中使用以下选项将图像置于顶部,但这些选项都不会导致我的地图中的图层正确分层:

  • 将海拔高度设置为"绝对"并且提升到> 50米(将其显示在Google地球中的多边形上方)。
  • 将绘制顺序增加到高于多边形的值。
  • 在文档树中,重新排序多边形列表中的图像(定位在多边形的上方和下方)。
  • 在文档树中,将图像放在树中的自己的文件夹中(位于多边形文件夹的上方和下方)。

但是,这些尝试中的每一次仍会导致KMZ在我的网页中显示不正确 - 图像叠加显示在后面:

Google Earth vs Google Maps rendering

我还尝试将多边形放入一个KMZ,将图像叠加放入另一个KMZ中,将每个多边形分别加载到我的地图中,使用更高的zZ索引来显示KMZ和图像,图像叠加层仍然分层在多边形下方

就我添加KMZ文件的客户端代码而言(如果我在那里做错了),我会获取每个KMZ的URL并将其传递给以下方法:

function addKMZFile(myMap, kmzUrl) {
    var kmzLayer = new google.maps.KmlLayer({
        url: kmzUrl,
        preserveViewport: true,
        map: myMap,
        clickable: true
    });
}

我已将示例KMZ上传到我的文件服务器,可用于测试目的(使用上述方法将KMZ添加到我的地图中): http://bassmanjase.altervista.org/SO_Test.kmz

我似乎无法在Google Maps KML文档中看到有关图像叠加或KML中的分层方式的具体提及。有没有办法配置KML,以便在Google地图中显示时,图像叠加层叠在多边形上方?

2 个答案:

答案 0 :(得分:1)

由于似乎没有办法在Google地图中原生地在多边形上方渲染叠加层,因此我采用的解决方法是降低多边形的不透明度,以便叠加层可见在他们之下。

这也带来了额外的好处,即底层地图图像有些可见(因为我的叠加层具有透明背景):

Semi-opaque polygons with image overlay below

答案 1 :(得分:0)

我已经可以通过以下样式实现它:

#map > div > div > div > div > div:nth-child(2) img[draggable="false"] {
  opacity: 0.4;
}

enter image description here