0

クラスター戦略で openLayers Vector を使用しています。Vector.features を使用してリストとして返される機能を取得すると、機能の配列ではなくクラスターの配列が返されます。これにより、機能を個別に扱うことができなくなります。クラスタリング戦略を使用しているときに機能リストを取得する方法を知っている人はいますか? どんな助けでも大歓迎です。

(例: KML に 5 つの機能があり、それらが 1 つにクラスター化されている場合、vector.features.length=1 を取得します。長さ 5 の元の機能リストが必要です)

以下は私のVectorの実装です:

var maps_layer = new OpenLayers.Layer.Vector("KML", {
                     strategies: [new OpenLayers.Strategy.Cluster()],
                     protocol: new OpenLayers.Protocol.HTTP({
                        url: "kml/maps.kml",
                        format: new OpenLayers.Format.KML({
                           extractStyles: true, 
                           extractAttributes: true,
                        })
                    })
                 })

 var my_array = maps_layer.features; //Here is the problem.

ドキュメントは次のとおりです。http://dev.openlayers.org/docs/files/OpenLayers/Layer/Vector-js.html

4

1 に答える 1

1

あなたは*これを試すことができます.私は今それをテストする環境を持っていませんが、うまくいくはずです. (注意: あなた* は検索エンジンのユーザーを指します..)

function getFeatures(maps_layer) {
    var features = new Array();
    for (var i = 0; i < maps_layer.features.length; i++) {
        if (maps_layer.features[i].cluster) {
            for (var j = 0; j < maps_layer.features[i].cluster.length; j++)
            features.push(maps_layer.features[i].cluster[j]);
        } else {
            features.push(maps_layer.features[i]);
        }

    }
}
于 2013-02-01T13:35:13.880 に答える