2013-06-02 109 views
4

添加圖層時,有沒有辦法設置kml圖層的透明度?我正在添加一個kml圖層,您無法看到下面的街道。有沒有辦法做到這一點設置KML圖層透明度

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

    var ctaLayer = new google.maps.KmlLayer({ 
    url: 'images/test3.kml' 
    }); 

    var ctaLayer2 = new google.maps.KmlLayer({ 
    url: 'images/test.kml' 
    }); 
    var ctaLayer3 = new google.maps.KmlLayer({ 
    url: 'images/kmztest2.kmz' 
    }); 
    ctaLayer3.setMap(map); 
    ctaLayer2.setMap(map); 
    ctaLayer.setMap(map); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

回答

3

您不能修改在KmlLayer多邊形的透明度。你有三個選擇(即我能想到的):

  1. 定義opacity in the KML

  2. 進口KML到FusionTables,並使用FusionTablesLayer (which allows you to change the opacity of polygons)

  3. 如果KML是不是太複雜,使用第三方解析器(geoxml3geoxml-v3,這將解析KML並使其作爲自帶谷歌地圖JavaScript API V3對象(它允許你修改不透明度)。

+0

第一種選擇爲我工作! +1 – EMM

3

由於KML是由谷歌地圖API添加爲DOM的圖像,你可以通過搜索包含"kml"在其src屬性<img>元素的CSS改變其不透明度:

#map img[src*='kml'] { 
    opacity: .5; 
} 

此外,還可以實現這個使用jQuery:

​​

但要記住的是,當用戶放大的出或移動地圖,新KML圖像將被加載,所以你必須要調用的jQuery再次起作用。

0

這個方案並不完美,因爲它改變縮放級別時會導致輕微的閃光燈,但有些人可能會發現這很有用:

google.maps.event.addListener(map, 'tilesloaded', function() { 
      $("#map").find("img").css("opacity","0.5"); 
});