我们如何从kml文件中直接调用javascript函数

时间:2014-04-29 21:16:59

标签: javascript google-maps kml jak

我向你解释我的问题,我必须在地图中显示一些多边形,当我点击其中一个窗口信息中的链接时,我必须能够调用javascript方法。

直接使用google api时没问题,您可以在下面找到结果和代码:

http://jsfiddle.net/9fzy3/embedded/result/

var contentString = "You can add thi zone : <a href=\"#\" onclick=\"alert('Your zone has been added !')\">add</a>";
var infowindow = new google.maps.InfoWindow({
      content: contentString
});
function initializeGoogleMaps() {
        var polygonCenter = new google.maps.LatLng( -74.43013763427734,45.95257568359375),
        placeholder = document.getElementById("print_map"),
        mapOptions = {
                center: polygonCenter,
                mapTypeControl:false,
                mapTypeId: google.maps.MapTypeId.ROADMAP
        },
        map = new google.maps.Map( placeholder, mapOptions ),
        kmlLayer = new google.maps.KmlLayer({
                    url: "http://xxxxxxx/910413303.kml"
        });

        google.maps.event.addListener(kmlLayer, 'click', function(evt) {
            infowindow.setPosition(evt.latLng)
           infowindow.open(map);
         });

        kmlLayer.setMap(map);
}

var contentString = "You can add thi zone : <a href=\"#\" onclick=\"alert('Your zone has been added !')\">add</a>"; var infowindow = new google.maps.InfoWindow({ content: contentString }); function initializeGoogleMaps() { var polygonCenter = new google.maps.LatLng( -74.43013763427734,45.95257568359375), placeholder = document.getElementById("print_map"), mapOptions = { center: polygonCenter, mapTypeControl:false, mapTypeId: google.maps.MapTypeId.ROADMAP }, map = new google.maps.Map( placeholder, mapOptions ), kmlLayer = new google.maps.KmlLayer({ url: "http://xxxxxxx/910413303.kml" }); google.maps.event.addListener(kmlLayer, 'click', function(evt) { infowindow.setPosition(evt.latLng) infowindow.open(map); }); kmlLayer.setMap(map); }

但我想知道,如果只有在使用kml文件时才有相同的行为。

对我来说,我认为这是不可能的,但我想听取您的意见。因为我被迫只使用kml文件。

我认为解决问题的解决方案更好,可能是使用geoxml3 api解析kml文件,并在使用api直接使用解析后的元素。

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

您的KML可以有一个默认的信息窗口 - 检查Placemarks的结构 开始:名称/描述应该显示在v3中。

此外,如果您不想对说明中的所有内容进行硬编码,则可以使用ExtendedData和更多结构化信息窗口的模板。