Jawaban:
The Resize , seperti @Mapperz disebutkan mungkin adalah cara untuk pergi.
Atau, jika Anda memiliki banyak poin, daripada perulangan melalui semua poin mengubah ukuran mereka, Anda bisa mengubah lapisan pointRadius
gaya di peta zoom sehingga perubahan yang terjadi pada semua fitur dalam satu panggilan. Saya tidak bisa mengatakan dengan pasti apa kinerja yang lebih baik, tetapi saya akan membayangkan mengubah gaya jika ada banyak poin.
Metode styling memiliki kelemahan seperti tidak memiliki banyak pilihan seperti yang Resize lakukan (skala, asal, rasio), itu hanya jari-jari.
Ubah Ukuran Fitur Secara terprogram menggunakan 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 Lihat> Sumber
Anda bisa gaya yang menghitung titik Radius tergantung pada tingkat Zoom Peta:
// 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});