Векторные слои
OpenLayers может отображать различные типы данных из различных источников. На сегодня есть два варианты отображения векторных данных, каждый со своими достоинствами и недостатками.
Один из вариантов - Vector - использует возможности браузеров (SVG, VML или Canvas) для отображения данных. Другой - Marker - использует HTML тэг image.
Класс Vector предоставляет больше возможностей - отображать линии, полигоны и т.п. Vector является главным направлением развития OpenLayers. Он позволяет оперировать большим количеством стилей, настроек слоя и подключений к удаленным серверам.
Класс Marker является устаревшим и оставлен для обратной совместимости. Но также обладает некоторыми возможностями, которые реализовать в Vector сложнее.
Vector
Для создания векторных объектов используется класс OpenLayers.Feature.Vectors. Создадим слой и поместим на него точку с координатами (85, 70) и полями данных 'size', 'type':
Пример: 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
Marker работает только с точками (никаких линий, полигонов). Стили задаются классом OpenLayers.Icon. Взаимодействие с объектами ведется совсем иначе. В общем, Marker представляет "старые" способы работы с географическоми данными в интернете. По-возможности, используйте новые классы Vector.
Взаимодействие
Для обращения к объектам слоя нужно зарегистрировать обработчик события для каждого отдельного маркера:
С каждым маркером может быть связано несколько событий.
