将click事件添加到已加载的KML中的标记

时间:2014-06-11 15:38:03

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

我正在向我的谷歌地图加载KML。使用此功能,地图可以正确加载kml上的标记

function initialize() {
    var mapOptions = {
        center: new google.maps.LatLng(12.136389, -86.251389),
        zoom: 11
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);

    var ctaLayer = new google.maps.KmlLayer({
        url: 'http://mobilenicode-001-site1.smarterasp.net/Content/Prueba.css'
    });
    ctaLayer.setMap(map);
}

问题是我正在尝试向来自KML的标记添加“addListener”事件。 我该如何实现?

2 个答案:

答案 0 :(得分:1)

你做不到。 Google会渲染KML服务器端,并将其与给定的行为和元素作为一个整体叠加在地图中。虽然您可以为KML图层设置一些选项,但您无法解决其中的特定元素。

根据您的后端,如果您有后端,则可以解析KML文件。 (标记应出现在<PlaceMark>标记内,但您的里程可能会有所不同)并自行绘制标记。

答案 1 :(得分:1)

向KmlLayer添加点击监听器(如documentation中所述):

var ctaLayer = new google.maps.KmlLayer({
    url: 'http://mobilenicode-001-site1.smarterasp.net/Content/Prueba.css'
});
ctaLayer.setMap(map);
google.maps.event.addListener(ctaLayer,'click',function(evt) {
    alert("marker clicked");
});

working fiddle

请注意,KmlLayers支持的唯一鼠标事件是&#34;点击&#34;事件