OpenLayers: PNG on Vector Layer

Hallo,

ich würde gerne dieses Beispiel (http://openlayers.org/dev/examples/drag-feature.html) so ändern, dass statt dem Punkt ein PNG-Bild plaziert werden kann.

Ich habe es schon mit StyleMap versucht, aber das scheint nicht der richtige Weg zu sein. Bei einem Punkt werden mir dann zwar die Marker angezeigt, aber die anderen Elemente gehen dann nicht mehr.

Ziel ist es, verschiedene Bilder UND Linien, Punkte, Polygone auf der Karte einzuzeichnen UND sie verschieben zu können. Wenn ich die Bilder im Marker Layer plaziere, habe ich ja nicht die “Drag”-Funktionalität, oder?

Bin um jeden Tipp verlegen.

Danke.

var sMap = new OpenLayers.StyleMap({
“default”: {
externalGraphic: ‘http://www.openlayers.org/dev/img/marker.png’,
graphicWidth: 30,
graphicHeight: 30
}
});

  vectors = new OpenLayers.Layer.Vector("Vector Layer", {styleMap: sMap});
  map.addLayer(vectors);

Ich habe es jetzt versucht, indem ich per handlerOptions einen eigenen Style übergebe. Nur greift das irgendwie nicht.

var myStyle = new OpenLayers.StyleMap({
strokeColor: “blue”,
strokeOpacity: “0.7”,
strokeWidth: 2,
fillColor: “blue”,
pointRadius: 3,
cursor: “pointer”
});

controls = {
point: new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.Point, {handlerOptions: {style: myStyle}}),
line: new OpenLayers.Control.DrawFeature(vectors,
OpenLayers.Handler.Path),
polygon: new OpenLayers.Control.DrawFeature(vectors,
OpenLayers.Handler.Polygon),
drag: new OpenLayers.Control.DragFeature(vectors)
};

erstmal herzlich willkommen im Forum!

Du hast hier ein OL-Problem, das wohl die wenigsten von uns hier klären können. Dazu ist es ein wenig zu speziell.
Ich würde es mal direkt bei OL versuchen:

http://trac.osgeo.org/openlayers/wiki/MailingLists

wenn es dann zu Openstreetmap-Problemen kommen sollte, können wir sicher weiterhelfen.

Gruss
walter

p.s. soll kein “Rausschmiss” sein, aber ich bin wirklich skeptisch ob dir hier jemand schnell weiterhelfen kann. geht schon verdammt tief an die OL-Substanz ran. 1-2 Super-OL-User haben wir schon, aber das kann dauern.

Hallo,

nimm mal das hier als Beispiel: http://openlayers.org/dev/examples/select-feature-multilayer.html

und füge am Ende von function init(), also kurz vor dem createFeature folgendes ein:


			var d1 = new OpenLayers.Control.DragFeature(vectors1);
			var d2 = new OpenLayers.Control.DragFeature(vectors2);
			map.addControl(d1);
			map.addControl(d2);
			d1.activate();
			d2.activate();

Dann kannst Du das sowohl png Image als auch die Vector features in der Gegend hin und her schieben.

hth

Tach.

Die DrawFeature des Original-OpenLayers benutzen das Styling des (gemeinsamen) LayerVector.

Nach einem kleinen Patch kann man jedem DrawFeature einen eigenen Style vergeben.

Orange Grüße
Der Assistent

Hallo,

ich habe mein Beispiel mal online gestellt: http://maxheight.bplaced.net/demo.html

Wahrscheinlich muss der OP die Lösungen von Wolf’s Assistent und meinem Ansatz (mit 2 Layern) kombinieren, wenn

gezeichnet werden / verschiebbar sein sollen. YMMV.

Ah, ich sehe gerade, dass Wolf aus

drawFeature: function(geometry) {
    var feature = new OpenLayers.Feature.Vector(geometry);

ein
drawFeature: function(geometry) {
var feature=new OpenLayers.Feature.Vector(geometry, null, this.style);

gemacht hat in OpenLayers.Control.DrawFeature) Damit spart man sich auch das Rumgehampele mit 2 layern und kann jedem Feature unterjubeln was man will :sunglasses:

Ohne Patch müsste man wahrscheinlich dennoch zu 2 Layern + Templates greifen und die Features in Abhängigkeit von irgendwelchen Eigenschaften dynamisch stylen (Beispiel: http://openlayers.org/dev/examples/styles-context.html). Ich glaube, es gab da irgendein Problem mit den Kontexten, wenn man in einem Layer Bilder + Vektor-Features gemeinsam nutzen wollte, daher der 2. Layer. Kann sein, dass ich das aber falsch in Erinnerung habe, dunno.

Hallo,

ich möchte nicht vergessen, mich für die Hilfe zu bedanken. Der Patch von Oranger Assistent funktioniert super.

Gruß
c4yolli