3

我使用 GGeoXml 对象在嵌入式 Google 地图上覆盖了 KML 文件。我希望能够从 Javascript 访问 KML 文件中的特定地标(例如,突出显示地图上选定的多边形以响应用户操作)。

理想情况下,我想做的是这样的(伪代码):

 geoXml.getPlacemarkByName('Foo').focus();

不幸的是,Google Maps API似乎没有公开地标或 KML 覆盖的任何其他内部结构。有人对我如何实现这一点有任何想法吗?我对覆盖层是如何在内部实现的一无所知,但似乎可能有一个黑客可以让我这样做。

我也在使用 jQuery FWIW。

4

4 回答 4

3

你看过GeoXML吗?

于 2008-10-20T20:38:49.540 回答
2

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

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

但是,我想不出一种从标记对象中获取地标 ID 的方法。因此,我能够访问特定地标的唯一方法是遍历数组并根据坐标将标记与我的数据匹配。这不是一个真正优雅的解决方案,但它是我能够使其工作的唯一方法。

于 2008-12-17T19:25:57.353 回答
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);
    });

那应该有帮助...

于 2009-01-07T23:14:29.283 回答
0

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

于 2009-09-18T04:41:48.883 回答