Câu trả lời:
Các Resize , như @Mapperz đề cập có lẽ là con đường để đi.
Ngoài ra, nếu bạn có nhiều điểm, thay vì lặp qua tất cả các điểm thay đổi kích thước điểm, bạn có thể thay đổi pointRadius
kiểu của lớp trên thu phóng bản đồ để thay đổi xảy ra với tất cả các tính năng trong một cuộc gọi. Tôi không thể nói chắc chắn hiệu suất nào tốt hơn, nhưng tôi sẽ tưởng tượng việc thay đổi phong cách sẽ có nhiều điểm.
Phương pháp tạo kiểu có những nhược điểm như không có nhiều tùy chọn như Resize hiện (tỷ lệ, gốc, tỷ lệ), nó chỉ là một bán kính.
Thay đổi kích thước các tính năng theo lập trình bằng cách sử dụng 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/release/OpenLayers-2.12/examples/resize-features.html Xem> Nguồn
Bạn có thể tạo kiểu tính toán Bán kính điểm tùy thuộc vào Map Zoomlevel:
// 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});