0

私はosmでパスクリエーターに取り組んでいます。線の追加は問題なく機能しますが、非常に長い線を作成してズームインすると、高いズームレベルで線が消えます。これは、ビューポートがラインの始点や終点から遠く離れている場合に表示されるようです。行を分割すると役立つ場合がありますが、これの最大サイズはどれですか?

これは縮小されたコードサンプルです。レベル7にズームインすると、行がなくなります。

    $(document).ready(function() {    
            var map = new OpenLayers.Map('map');

            var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
            map.addLayer(mapnik);

            var path = new OpenLayers.Layer.Vector("path");
            map.addLayer(path);  

            var pathStyle = {
                    strokeColor: "#0033ff",
                    strokeOpacity: 0.7,
                    strokeWidth: 5
            };

            var points = new Array(
                    new OpenLayers.Geometry.Point(-7856503.5146562, 880554.5664875),
                    new OpenLayers.Geometry.Point(8502243.5278938, 724011.5325875)
            );

            var line = new OpenLayers.Geometry.LineString(points);

            var lineFeature = new OpenLayers.Feature.Vector(line, null, pathStyle);
            path.addFeatures([lineFeature]);

            map.zoomToExtent(path.getDataExtent());
    });

私はosmにまったく慣れていないので、たぶん私は何かを台無しにしています..何かアイデアはありますか?前もって感謝します

4

1 に答える 1

0

私はfirebugで遊んでいて、svg要素を調べていました。osmは線を作るためにsvgポリラインを使用することが判明しました。行の値は、15000を超える値でスペースが不足しています。これは、レンダラーにとっては非常に重要です。

この問題に関するバグレポートをチェックインしました: https ://github.com/openlayers/openlayers/issues/617

私の現在の回避策は、ラインを100kmの平和に分割することです。これは機能しますが、より多くの計算が必要です。

誰かがここに夢中になっている場合は、役立つ数学のサイトがあります: http ://www.movable-type.co.uk/scripts/latlong.html

于 2012-08-06T11:42:46.970 に答える