Création par programmation d'une fonction vectorielle dans OpenLayers2

16

Je souhaite créer une entité vectorielle, par programme, sur ma carte. Il est censé être au format A4, pour afficher une sorte d'aperçu avant impression.

J'ai créé un contrôle pour gérer cela, mais maintenant j'en suis au point où je dois créer la fonctionnalité. Et je n'ai aucune idée de comment je peux le faire. Des idées?

Kristian Frost
la source

Réponses:

30

Création et ajout d'une entité vectorielle à un calque:

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]);

Cependant, vous préférerez peut-être regarder les commandes d'impression GeoExt car elles prennent en charge les tailles de page telles que A4 et ajoutent des zones d'aperçu à la carte. Vous pouvez également consulter le code source pour voir comment ils procèdent.

geographika
la source
+1 pour les commandes d'impression GeoExt. Ils semblent très bien fonctionner. Vous pouvez les essayer gis.uster.ch/webgis
underdark
comment puis-je également ajouter un nom de fonctionnalité? (fonctionnalité-> propriétés-> nom) j'ai besoin que feture soit affiché sur la grille de fonctionnalités comme [ceci], donc ils ont besoin d'un nom ( api.geoext.org/1.1/examples/feature-grid.html )
k102
@ k102 voir la réponse mise à jour
geographika