Несколько изображений на слой в OpenLayers

Можно ли разместить несколько изображений на слое в OpenLayers?

В идеале я хотел бы сгруппировать свои изображения по категориям (каждый слой - это одна категория), чтобы я мог отображать и скрывать каждую категорию в целом вместо того, чтобы показывать / скрывать каждое отдельное изображение.

Это возможно? Я нашел несколько примеров, использующих слой изображения OpenLayers (который, кажется, поддерживает только одно изображение) или векторный слой с StyleMap (который также, кажется, допускает только одно внешнее изображение).

Я что-то упустил или потребуется больше усилий (например, создание нестандартного типа слоя)?

Заранее спасибо!


person chrischu    schedule 01.05.2012    source источник


Ответы (1)


Чтобы разместить несколько изображений на одном слое, вы можете создать styleMap следующим образом

var style = new OpenLayers.StyleMap({
    default :new OpenLayers.Style({
          'pointRadius': 10,
          'externalGraphic': '/images/${icon}.png'
    })
})

Где «$ {icon}» - атрибут объекта.

В следующем примере я использую 2 изображения «звезда» и «дом».

var path = new OpenLayers.Layer.Vector( "images" );
//set the styleMap
path.styleMap = style;
map.addLayers([path]);

//create a new feature
var pointHome = new OpenLayers.Geometry.Point(-57.533832,-25.33963);
var featureHome = new OpenLayers.Feature.Vector(pointHome);
//set the icon of the feature
featureHome.attributes["icon"] ="home";

var pointStar = new OpenLayers.Geometry.Point(-57.533371,-25.338946);
var featureStar = new OpenLayers.Feature.Vector(pointStar);
//set the icon of the feature
featureStar.attributes["icon"] ="star";

path.addFeatures([featureHome, featureStar]);
person Maxi Baez    schedule 09.11.2012