Программное создание векторного объекта в OpenLayers2

16

Я хочу создать векторный объект программным способом на моей карте. Предполагается, что это формат бумаги формата A4, для показа своего рода предварительного просмотра.

Я создал элемент управления для обработки этого, но теперь я нахожусь в точке, где мне нужно создать функцию. И я понятия не имею, как я могу это сделать. Есть идеи?

Кристиан Фрост
источник

Ответы:

30

Создание и добавление векторного объекта в слой:

var points = [
    new OpenLayers.Geometry.Point(0, 0),
    new OpenLayers.Geometry.Point(0, 100),
    new OpenLayers.Geometry.Point(100, 100),
    new OpenLayers.Geometry.Point(100, 0)
];
var ring = new OpenLayers.Geometry.LinearRing(points);
var polygon = new OpenLayers.Geometry.Polygon([ring]);

// create some attributes for the feature
var attributes = {name: "my name", bar: "foo"};

var feature = new OpenLayers.Feature.Vector(polygon, attributes);
var layer = new OpenLayers.Layer.Vector("Test");
layer.addFeatures([feature]);

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

geographika
источник
+1 за контроль печати GeoExt. Кажется, они работают очень хорошо. Вы можете попробовать их gis.uster.ch/webgis
underdark
Как я могу также добавить имя функции? (feature-> properties-> name) Мне нужно, чтобы feture отображался в сетке объектов, например [this], поэтому им нужно имя ( api.geoext.org/1.1/examples/feature-grid.html )
k102
@ k102 см обновленный ответ
география