通过Javascript访问谷歌地图覆盖中的KML placemarks?

通过Javascript访问谷歌地图覆盖中的KML placemarks?,javascript,jquery,google-maps,kml,Javascript,Jquery,Google Maps,Kml,我有一个KML文件覆盖在使用GGeoXml对象的嵌入式Google地图上。我希望能够从Javascript访问KML文件中的特定位置标记(例如,为了响应用户操作而在地图上高亮显示选定的多边形) 理想情况下,我想做的事情如下(伪代码): 不幸的是,似乎没有暴露的地方标记或任何其他内部的KML覆盖。有人对我如何完成这项任务有什么想法吗?我不知道覆盖层是如何在内部实现的,但似乎有一个黑客可以让我这么做 我也在使用jQuery FWIW。你看过吗?这个问题似乎没有一个简单的解决方案,因为谷歌没有在API

我有一个KML文件覆盖在使用GGeoXml对象的嵌入式Google地图上。我希望能够从Javascript访问KML文件中的特定位置标记(例如,为了响应用户操作而在地图上高亮显示选定的多边形)

理想情况下,我想做的事情如下(伪代码):

不幸的是,似乎没有暴露的地方标记或任何其他内部的KML覆盖。有人对我如何完成这项任务有什么想法吗?我不知道覆盖层是如何在内部实现的,但似乎有一个黑客可以让我这么做


我也在使用jQuery FWIW。

你看过吗?

这个问题似乎没有一个简单的解决方案,因为谷歌没有在API中提供答案。我发现的唯一一种访问单个地点标记的方法是在将它们添加到地图时“捕获”它们。为此,必须在地图对象上设置“addoverlay”侦听器。大概是这样的:

GEvent.addListener(map, 'addoverlay', function(o) {
    kmlmarkers.push(o);
}

但是,我想不出一种从marker对象中获取placemark id的方法。因此,我能够访问特定位置标记的唯一方法是在数组中循环,并根据坐标将标记与我的数据进行匹配。这不是一个真正优雅的解决方案,但这是我能够使其工作的唯一方法。

您只需按如下方式查看对象即可了解这一点:

GEvent.addListener(map, 'addoverlay', function(obj)
{ if (!obj) {
        alert("Cannot describe a null object");
        return;
    }
    var str = "";

        for ( var prop in obj) {
            str += prop + " = " + obj[prop] + ",\n";
        }
        alert(str);
    });

这将有助于……

查看Kml更新。您需要一个placeark ID

GEvent.addListener(map, 'addoverlay', function(obj)
{ if (!obj) {
        alert("Cannot describe a null object");
        return;
    }
    var str = "";

        for ( var prop in obj) {
            str += prop + " = " + obj[prop] + ",\n";
        }
        alert(str);
    });