1

このコードを使用して、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をご覧ください。

これらの機能の名前と説明を取得するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

1

あなたの問題は、HTTP呼び出しがあなたの呼び出しとは非同期に発生することだと思います

kmlLayer.features[0]

だからそれは空のようです。解決策は、次のようにKMLが完全にロードされた後にのみ機能配列にアクセスすることです。

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

FirefoxとChromeのどちらを使用する場合でも、マップをロードした後、開発者のWebコンソールkmlLayer.features [0]に入力するだけで、実際には未定義ではないことがわかります。

これが役に立ったかどうか教えてください!

于 2013-01-28T14:07:44.387 に答える
0

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

彼らは、APIのv3でこの問題の解決策をリリースしたようで、「change」イベントを使用して「ready」をリッスンします。

于 2015-10-21T19:34:17.423 に答える