如何通过Javascript在Google Maps覆盖层中访问KML地标?

3
我有一个使用GGeoXml对象在嵌入式Google地图上叠加的KML文件。我希望能够从JavaScript中访问KML文件中的特定Placemark(例如,响应用户操作以在地图上突出显示所选多边形)。
理想情况下,我想做的是这样的事情(伪代码):
 geoXml.getPlacemarkByName('Foo').focus();

很遗憾,Google Maps API似乎没有公开KML叠加层的地标或任何其他内部信息。有人有什么想法吗?我不知道叠加层的内部实现方式,但似乎可能有一种方法可以让我做到这一点。

顺便说一下,我正在使用jQuery。

4个回答

3

2

这个问题似乎没有简单的解决方案,因为Google API中没有提供答案。我找到的唯一方法是在将标记添加到地图上时“捕获”它们,以便访问单独的地标。为了做到这一点,您必须在地图对象上设置一个“addoverlay”监听器。代码示例:

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

但是,我无法找到一种方法来获取标记对象中的地标id。因此,我能够访问特定地标的唯一方式是通过循环遍历数组,并根据坐标与我的数据匹配标记。这不是一个真正优雅的解决方案,但是这是我能够使其工作的唯一方式。


0

看一下 Kml 更新。你需要一个地标 ID。


0

你可以通过以下方式简单地查看对象来弄清这一点:

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);
    });

那应该会有所帮助...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接