Antworten:
Die Größe ändern , als @Mapperz erwähnte, ist wahrscheinlich der Weg.
Alternativ können Sie den Stil der Ebene ändern , wenn Sie viele Punkte haben, anstatt alle Punkte zu durchlaufen, deren Größe geändert wirdpointRadius
sodass die Änderung für alle Funktionen in einem Aufruf erfolgt. Ich kann nicht sicher sagen, was eine bessere Leistung ist, aber ich würde mir vorstellen, den Stil zu ändern, wenn es viele Punkte gibt.
Die Styling-Methode hat Nachteile, da sie nicht so viele Optionen bietet wie die Größenänderung (Skalierung, Ursprung, Verhältnis), sondern nur einen Radius.
Ändern Sie die Größe von Features programmgesteuert mit 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 Ansicht> Quelle
Sie können einen Stil festlegen, der den Punktradius abhängig vom Zoomlevel der Karte berechnet:
// 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});