Javascript 如何从KML文件中获取所有要素/多边形的列表?

Javascript 如何从KML文件中获取所有要素/多边形的列表?,javascript,openlayers,kml,Javascript,Openlayers,Kml,我使用以下代码将KML文件加载到OpenLayers中: var kmlLayer = new OpenLayers.Layer.Vector("KML", { projection: map.displayProjection, isBaseLayer: false, strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({ u

我使用以下代码将KML文件加载到OpenLayers中:

var kmlLayer =  new OpenLayers.Layer.Vector("KML", {
    projection: map.displayProjection,
    isBaseLayer: false,
    strategies: [new OpenLayers.Strategy.Fixed()],
    protocol: new OpenLayers.Protocol.HTTP({
        url: "mykml.kml",
        format: new OpenLayers.Format.KML({
            extractStyles: true,
            extractAttributes: true,
            maxDepth: 2
        })
    })
});
现在我必须列出这个文件中包含的所有多边形的名称

正在尝试
console.log(kmlLayer.features)
我可以看到这些功能,但不知道如何访问它们。请看,因为我还不允许上传图片

如何获取这些功能的名称和描述


提前感谢。

我认为您的问题在于HTTP调用从您的调用到

kmlLayer.features[0]
所以它看起来是空的。解决方案是仅在KML完全加载后访问功能阵列,如下所示:

kmlLayer.events.register("loadend", kmlLayer, function (e) {
    console.log(kmlLayer.features[0].attributes.name)
    });
无论您是使用Firefox还是Chrome,只要在加载地图后在开发者web控制台Kmlayer.features[0]中键入即可,它会告诉您地图实际上并没有未定义


让我知道这是否有用

我认为您的问题在于HTTP调用从您的调用到

kmlLayer.features[0]
所以它看起来是空的。解决方案是仅在KML完全加载后访问功能阵列,如下所示:

kmlLayer.events.register("loadend", kmlLayer, function (e) {
    console.log(kmlLayer.features[0].attributes.name)
    });
无论您是使用Firefox还是Chrome,只要在加载地图后在开发者web控制台Kmlayer.features[0]中键入即可,它会告诉您地图实际上并没有未定义

让我知道这是否有用

他们似乎已经为API的v3版本发布了解决此问题的解决方案,使用“更改”事件并侦听“准备就绪”。


他们似乎已经为API的v3发布了解决此问题的解决方案,使用“更改”事件并侦听“准备就绪”。

好的Kmlayer.features返回一个包含列出的所有特性的数组,所以只需从数组中单独访问它们,如:Kmlayer.features[x]-我不完全明白这个问题。通过访问所有功能,您希望实现什么?只列出名称?Kmlayer.features[0]未定义。是的,我想要一个所有名称的列表。好的Kmlayer.features返回一个包含列出的所有功能的数组,所以只需从数组中逐个访问它们,就像这样:Kmlayer.features[x]-我不完全明白这个问题。通过访问所有功能,您希望实现什么?只列出名称?Kmlayer。功能[0]未定义。是的,我想列出所有名称。就这样!非常感谢:-)就这样!非常感谢:-)