0

マーカーがジオメトリ ベクトル ポイントとして追加された openlayers マップがあります。スタイル オプションで、それぞれのサイズを設定します。ただし、問題は、ズームインまたはズームアウトすると、ページ全体を再度ロードするまですべて同じサイズになることです。つまり、ズームインまたはズームアウトすると、それらはすべて同じになります。

var layer_style = OpenLayers.Util.extend({},
OpenLayers.Feature.Vector.style['default']);
var style = OpenLayers.Util.extend({}, layer_style);

var pointLayer = new OpenLayers.Layer.Vector("Point Layer");

map.addLayers([terrain, road, satellite, hybrid, pointLayer]);
var lonlat = new OpenLayers.LonLat(0, 140);
lonlat.transform(proj, map.getProjectionObject());
map.setCenter(lonlat, 2);

var point = new OpenLayers.Geometry.Point(-40, -40);
point = point.transform(proj, map.getProjectionObject());
style.pointRadius = 10;
var pointFeature = new OpenLayers.Feature.Vector(point, null, style);
pointLayer.addFeatures([pointFeature]);

var point = new OpenLayers.Geometry.Point(-40, -40);
point = point.transform(proj, map.getProjectionObject());
style.pointRadius = 40;
var pointFeature = new OpenLayers.Feature.Vector(point, null, style);
pointLayer.addFeatures([pointFeature]);

これを読み込むと、サイズ 10 とサイズ 40 の 2 つのマーカーが表示されます。しかし、ズームインまたはズームアウトすると、それらはすべて同じサイズになります。

4

1 に答える 1

0

毎回スタイル オブジェクトの pointRadius プロパティを上書きしているため、OpenLayers はスタイルのみを指すため、最終的には最後の値が使用されます。必要なことは、ルックアップを使用して、pointRadius が特定のフィーチャ属性に依存するようにすることです。ルールベースのスタイリングを参照してください: http://trac.osgeo.org/openlayers/wiki/Styles#Rule-basedStyling

于 2013-08-02T10:45:55.053 に答える