Вы можете использовать разрешение карты, которое определяется как единица карты на пиксель.
Итак, при условии, что ваши единицы измерения карты - метры, требуемый размер пикселя будет:
size_in_meters / map_resolution
.
Вы можете использовать приведенный выше расчет на карте стиля, чтобы размеры точек динамически изменялись при изменении разрешения карты:
styleMap = new OpenLayers.StyleMap({
'default': new OpenLayers.Style({
pointRadius: "${getSize}"
},
{ context: {
getSize: function(feature) {
return size_in_meters / feature.layer.map.getResolution();
}}
})
});