Javascript 如何从KML文件中获取所有要素/多边形的列表?
我使用以下代码将KML文件加载到OpenLayers中: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
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]未定义。是的,我想列出所有名称。就这样!非常感谢:-)就这样!非常感谢:-)