最终目标是在一张地图上显示一些 kml叠加,并在每个kml图层的控制按钮上点击设置透明度值(取决于多少有层)。
我的第一个想法是直接通过div图层改变不透明度/透明度..但我找不到任何方法来解决在地图中显示kml图层的div。
有人知道如何解决KmlLayer(..)插入KML的div吗?
现在我正在尝试通过KmlLayer对象找到一种方法。 但到目前为止还没有运气..
任何想法如何处理?
守则是:
(function() {
window.onload = function(){
var myLatlng = new google.maps.LatLng(48.1497, 11.5795);
var myOptions = {
zoom: 10,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var georssLayer = new google.maps.KmlLayer('somemap.kml',({'suppressInfoWindows': true}));
georssLayer.setMap(map);
}
})();
答案 0 :(得分:1)
据我所知,通过标准的谷歌api是不可能的,但你可以使用jquery或其他一些库来做到这一点。 KML图像只是DOM的一部分,因此如果您可以找到节点,则可以操纵它们的属性。 如果您有多个KML文件,则可能需要为图像命名,以便名称反映哪个KML图像属于。因此,如果您有KML1将KML1预先添加到该KML中的所有图像名称,并使用jQuery选择器搜索该字符串。
这是一个使用jquery的示例,它针对所有图像(对于子字符串的搜索,请参阅http://api.jquery.com/attribute-contains-selector/):
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: KmlLayer KML</title>
<script src="http://code.jquery.com/jquery-1.4.4.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".b_opacity").click(function(){
//this will find all the images in the map canvas container. Normally you would want to target specific images by the value of src
$("#map_canvas").find("img").css("opacity","0.4")
})
})
function initialize() {
var chicago = new google.maps.LatLng(41.875696,-87.624207);
var myOptions = {
zoom: 11,
center: chicago,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var ctaLayer = new google.maps.KmlLayer('http://code.google.com/apis/kml/documentation/KML_Samples.kml');
ctaLayer.setMap(map);
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 600px;height: 600px;"></div>
<input type="button" value="dim the lights" class="b_opacity">
</body>
</html>
注意:请记住,css属性不透明度在IE中不起作用,你必须使用filter:alpha(opacity = 40)用于IE,或者你可以使用jQuery .fade()方法。