通过Javascript访问Google地图叠加层中的KML地标?
我使用GGeoXml对象在嵌入式Google地图上叠加了KML文件。 我希望能够从Javascript访问KML文件中的特定地标(例如,在地图上突出显示选定的多边形以响应用户操作)。
理想情况下,我想做的是这样的事情(伪代码):
geoXml.getPlacemarkByName('Foo').focus();
不幸的是, Google Maps API似乎没有公开地标或KML叠加层的任何其他内部。 有没有人想过如何实现这个目标? 我对内部如何实现叠加层一无所知,但似乎可能有一个黑客可以让我这样做。
我也在使用jQuery FWIW。
你看过GeoXML吗?
似乎没有一个简单的解决方案可以解决这个问题,因为Google没有在API中提供答案。 我发现访问各个地标的唯一方法是在将它们添加到地图时“捕获”它们。 为此,您必须在地图对象上设置“addoverlay”侦听器。 像这样的东西:
GEvent.addListener(map, 'addoverlay', function(o) { kmlmarkers.push(o); }
但是,我无法弄清楚如何从标记对象中获取地标的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。