如何从KML文件中获取所有功能/多边形的列表?

时间:2013-01-27 10:34:47

标签: 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({
        url: "mykml.kml",
        format: new OpenLayers.Format.KML({
            extractStyles: true,
            extractAttributes: true,
            maxDepth: 2
        })
    })
});

现在我必须列出此文件中包含的多边形的所有名称。

尝试console.log(kmlLayer.features)我可以看到这些功能,但我不知道如何访问它们。请参阅http://s14.directupload.net/file/d/3148/2et4d7wf_png.htm,因为我还不允许上传图片。

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为您的问题是HTTP调用是从您对

的调用异步发生的
kmlLayer.features[0]

所以看起来很空洞。解决方案是仅在完全加载KML之后访问要素数组:

kmlLayer.events.register("loadend", kmlLayer, function (e) {
    console.log(kmlLayer.features[0].attributes.name)
    });

您使用Firefox或Chrome只需在加载地图后输入您的开发人员网络控制台kmlLayer.features [0],它就会告诉您它实际上并非未定义。

请告诉我这是否有帮助!

答案 1 :(得分:0)

http://openlayers.org/en/v3.9.0/doc/faq.html#why-aren-t-there-any-features-in-my-source-

他们似乎已经为API的v3发布了这个问题的解决方案,使用'change'事件并听取'ready'。