向加载的KML中的标记添加单击事件

Add click event to markers from a loaded KML

本文关键字:添加 单击 事件 加载 KML      更新时间:2023-09-26

我正在加载一个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);
}

问题是,我试图添加一个"addListener"事件的标记,来自KML。我怎么能做到这一点?

你不能。Google呈现KML服务器端,并将其与给定的行为和元素作为一个整体覆盖在您的地图中。虽然您可以为KML层设置一些选项,但您不能处理其中的特定元素。

取决于你的后端,如果你有的话,你可以解析一个KML文件。(标记应该出现在<PlaceMark>标签内,但您的里程可能会有所不同)并自己绘制标记。

为KmlLayer添加一个点击监听器(如文档中所述):

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");
});
工作小提琴

注意,KmlLayers唯一支持的鼠标事件是"click"事件。