Векторные слои

OpenLayers может отображать различные типы данных из различных источников. На сегодня есть два варианты отображения векторных данных, каждый со своими достоинствами и недостатками.

Один из вариантов - Vector - использует возможности браузеров (SVG, VML или Canvas) для отображения данных. Другой - Marker - использует HTML тэг image.

Класс Vector предоставляет больше возможностей - отображать линии, полигоны и т.п. Vector является главным направлением развития OpenLayers. Он позволяет оперировать большим количеством стилей, настроек слоя и подключений к удаленным серверам.

Класс Marker является устаревшим и оставлен для обратной совместимости. Но также обладает некоторыми возможностями, которые реализовать в Vector сложнее.

Vector

 OpenLayers.Layer.Vector

Для создания векторных объектов используется класс OpenLayers.Feature.Vectors. Создадим слой и поместим на него точку с координатами (85, 70) и полями данных 'size', 'type':

Error: Failed to load processor javascript
No macro or processor named 'javascript' found

Пример: StyleMap Example.

Для задания стиля оформления используются классы OpenLayers.Style и OpenLayers.StyleMap.
Подробнее, см. Стили оформления слоев.

Взаимодействие

Взаимодействие со слоем Vector производится через элементы управления  OpenLayers.Control.SelectFeature и OpenLayers.Control.GetFeature.

SelectFeature позволяет обратиться к аттрибутивной информации. Для слоев Vector - это параметры, передаваемые при создании объекта [в предыдущем примере создания точки это поля 'size' и 'type']. Для производных классов, например WFS, это могут быть поля базы данных.

При создании контроллера GetFeature указывается протокол для доступа к данным. В примере WFS GetFeature Example (GeoServer) для объекта из векторного слоя информация запрашивается через слой WMS. Так же, это может быть пользовательский протокол для доступа к произвольным хранилищам данных, например как в  этом тесте.

Производные классы

  • Vector - базовый класс
  • GML - позволяет работать с множеством различных типов данных
  • PointTrack?
  • WFS?

Marker

 OpenLayers.Layer.Markers

Marker работает только с точками (никаких линий, полигонов). Стили задаются классом OpenLayers.Icon. Взаимодействие с объектами ведется совсем иначе. В общем, Marker представляет "старые" способы работы с географическоми данными в интернете. По-возможности, используйте новые классы Vector.

Взаимодействие

Для обращения к объектам слоя нужно зарегистрировать обработчик события для каждого отдельного маркера:

Error: Failed to load processor javascript
No macro or processor named 'javascript' found

С каждым маркером может быть связано несколько событий.

Производные классы