OpenLayers: OpenLayers.Layer.PointTrack
Добавлено: 10 окт 2011, 13:08
Слой типа PointTrack предназначен для отрисовки точечных данных (например, GPX-треков) в виде линий. Точки (массив объектов класса OpenLayers.Feature) соединяются линиями в порядке следования их в массиве. Класс OpenLayers.Layer.PointTrack довольно простой и содержит два собственных свойства: dataFrom и styleFrom и один метод: addNodes. Назначение свойств dataFrom и styleFrom заключается в следующем: при соединении двух точек линии может быть присвоена атрибутика и стиль начальной или конечной точки. В соответствии с этим выбирается одно из двух доступных значений указанных свойств:
или
По умолчанию свойства dataFrom и styleFrom имеют значение null, поэтому никакая атрибутика линиям не присваивается и отрисовываются они дефолтным стилем.
Порядок работы с данным типом слоев следующий. Прежде всего необходимо создать точечный векторный слой OpenLayers.Layer.Vector, затем создать слой класса OpenLayers.Layer.PointTrack и вызвать его метод addNodes, в котором в качестве параметра указать массив объектов первого слоя. Например:
Онлайн пример доступен здесь.
Код: Выделить всё
OpenLayers.Layer.PointTrack.SOURCE_NODE
Код: Выделить всё
OpenLayers.Layer.PointTrack.TARGET_NODE
Порядок работы с данным типом слоев следующий. Прежде всего необходимо создать точечный векторный слой OpenLayers.Layer.Vector, затем создать слой класса OpenLayers.Layer.PointTrack и вызвать его метод addNodes, в котором в качестве параметра указать массив объектов первого слоя. Например:
Код: Выделить всё
pointlayer = new OpenLayers.Layer.Vector('Original');
pointlayer.addFeatures([
new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(10, 2)),
new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(20, -10)),
new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(30, 15)),
new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(40, 5))
]);
tracklayer = new OpenLayers.Layer.PointTrack('track', {styleFrom: OpenLayers.Layer.PointTrack.SOURCE_NODE});
tracklayer.addNodes(pointlayer.features);