ズームアウト時のポイントのサイズ変更[終了]


8

このように地図上にポイントを追加しましたが、サイズは静的です。

ズーム時にそのポイントのサイズを変更するにはどうすればよいですか?

ズームアウトの地図

ここに画像の説明を入力してください

回答:


5

サイズ変更は、として@Mapperzは言及おそらく行く方法です。

または、すべてのポイントをループしてサイズを変更するのではなく、多くのポイントがある場合は 、マップズームでレイヤーのpointRadiusスタイルを変更して、1回の呼び出しですべてのフィーチャに変更を加えることができます。何がいいのかは定かではありませんが、ポイントが多ければスタイルを変えるのではないでしょうか。

スタイリング方法には、サイズ変更(スケール、原点、比率)ほど多くのオプションがなく、半径にすぎないなどの欠点があります。

ここにデモがあります

ここに画像の説明を入力してください ここに画像の説明を入力してください


6

Openlayers v2.12を使用したプログラムによる機能のサイズ変更

ここに画像の説明を入力してください

 map.addLayer(vectorLayer);
        map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5);
        vectorLayer.addFeatures([pointFeature, lineFeature, polygonFeature]);

    }

    var origin = new OpenLayers.Geometry.Point(-111.04, 45.68);
    function resizeFeatures(scale) {
        pointFeature.geometry.resize(scale, origin);
        lineFeature.geometry.resize(scale, origin);
        polygonFeature.geometry.resize(scale, origin);
        vectorLayer.redraw();
    }

http://dev.openlayers.org/releases/OpenLayers-2.12/examples/resize-features.html 表示>ソース


青色のポイントのサイズは静的であることに注意してください
bios

3
ポイントのサイズを強制的に変更することもできます。これはデフォルトです-ジオメトリに関するopenlayersのドキュメントを読んでください-dev.openlayers.org/docs/files/OpenLayers/Geometry/Point-js.html [サイズ変更はオプションです]
Mapperz

1

マップのズームレベルに応じてポイントの半径を計算するスタイルを使用できます。

        // var map = my OpenLayers.Map object
        var styleSel = new OpenLayers.Style({
            pointRadius: "${radius}",
            graphicName: "circle",
            strokeColor: "#004CFF",
            strokeWidth: 2,
            fillOpacity: 0

        }, {
            context: {
                radius: function (feature) {
                    var pix = map.getZoom() * 10; // ten time the zoo level
                    return pix;
                }
            }
        });
        var styleMapSelect = new OpenLayers.StyleMap({
        "default": styleSel
        });
        var layer= new OpenLayers.Layer.Vector("myLayer", {styleMap: styleMapSelect});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.