0

kml ファイルから LineString 機能をロードしている OpenLayers の openstreetmaps に問題があります。LineString とラインストリングの数が非常に複雑であるため、パフォーマンス以外はすべて正常に機能します。ラインストリングのジオメトリ/機能を単純化するために、simplyfy() 関数を使用したかったのです。これは、その場で単純化するために私が書いたコードです。問題は、以下のコード行にあります。

            feature.geometry.components[i].simplify(0.1);

これは、元のジオメトリ フィーチャ コンポーネントをまったく変更していないようです。私は何を間違っていますか?removeComponents を使用し、次に addComponents() を使用して単純化されたジオメトリを追加する必要があると思いますが、これを行う方法は?

preFeatureInsert: 関数 (機能)

{
    if (feature != "undefined" && feature.geometry != "undefined" && feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Collection");
    {
        if (feature.geometry.components != "undefined" && typeof(feature.geometry.components) != "undefined")
        {
            for (var i = 0; i < feature.geometry.components.length; i++)
            {
                if (feature.geometry.components[i].CLASS_NAME ==  "OpenLayers.Geometry.LineString")
                {
                    feature.geometry.components[i].simplify(0.1);
                }
            }
        }                           
    }
} 
4

1 に答える 1

1

シンプル化関数はコンポーネントの簡略化されたバージョンを返し、コンポーネント自体は変更しません。ループ内で、必要に応じてコンポーネントを設定できます。

feature.geometry.components[i] = feature.geometry.components[i].simplify(0.1);
于 2014-01-02T15:28:08.030 に答える