回答:
サイズ変更は、として@Mapperzは言及おそらく行く方法です。
または、すべてのポイントをループしてサイズを変更するのではなく、多くのポイントがある場合は 、マップズームでレイヤーのpointRadius
スタイルを変更して、1回の呼び出しですべてのフィーチャに変更を加えることができます。何がいいのかは定かではありませんが、ポイントが多ければスタイルを変えるのではないでしょうか。
スタイリング方法には、サイズ変更(スケール、原点、比率)ほど多くのオプションがなく、半径にすぎないなどの欠点があります。
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 表示>ソース
マップのズームレベルに応じてポイントの半径を計算するスタイルを使用できます。
// 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});