Respuestas:
El cambio de tamaño , como mencionó @Mapperz, es probablemente el camino a seguir.
Alternativamente, si tiene muchos puntos, en lugar de recorrer todos los puntos redimensionándolos, puede cambiar el pointRadius
estilo de la capa en el zoom del mapa para que el cambio ocurra en todas las entidades en una sola llamada. No puedo decir con certeza cuál es el mejor rendimiento, pero me imagino que cambiaría el estilo si hubiera muchos puntos.
El método de estilo tiene inconvenientes, como no tiene tantas opciones como Resize (escala, origen, relación), es solo un radio.
Cambiar el tamaño de las funciones de forma programática con 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 Ver> Fuente
Puede un estilo que calcule el radio del punto según el nivel de zoom del mapa:
// 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});