2013-08-01 11 views
0

У меня есть карта с открытыми слоями с добавленными маркерами в виде точек геометрии. В опции стиля я устанавливаю размер для каждого. Однако проблема заключается в том, что если я увеличиваю или уменьшаю масштаб, все они становятся одинаковыми, пока я не загружу всю страницу снова. Другими словами, как только я увеличиваю или уменьшаю масштаб, они все одинаковы.Размер маркера с открытыми слоями

var layer_style = OpenLayers.Util.extend({}, 
OpenLayers.Feature.Vector.style['default']); 
var style = OpenLayers.Util.extend({}, layer_style); 

var pointLayer = new OpenLayers.Layer.Vector("Point Layer"); 

map.addLayers([terrain, road, satellite, hybrid, pointLayer]); 
var lonlat = new OpenLayers.LonLat(0, 140); 
lonlat.transform(proj, map.getProjectionObject()); 
map.setCenter(lonlat, 2); 

var point = new OpenLayers.Geometry.Point(-40, -40); 
point = point.transform(proj, map.getProjectionObject()); 
style.pointRadius = 10; 
var pointFeature = new OpenLayers.Feature.Vector(point, null, style); 
pointLayer.addFeatures([pointFeature]); 

var point = new OpenLayers.Geometry.Point(-40, -40); 
point = point.transform(proj, map.getProjectionObject()); 
style.pointRadius = 40; 
var pointFeature = new OpenLayers.Feature.Vector(point, null, style); 
pointLayer.addFeatures([pointFeature]); 

Когда я загружаю это, я получаю два маркера, один размера 10, другой 40. Но когда я увеличение или уменьшение масштаба, все они стали одинаковым размером.

ответ

0

Вы каждый раз переписываете свойство pointRadius объекта стиля, поэтому в конечном итоге последнее значение будет использоваться, поскольку OpenLayers будет указывать только на стиль. Что вам нужно сделать, это использовать поиск, чтобы pointRadius зависел от данного атрибута объекта. См. «Стиль на основе правил»: http://trac.osgeo.org/openlayers/wiki/Styles#Rule-basedStyling

Смежные вопросы