You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2013-06-11 12:22:37

c4yolli
Member
Registered: 2013-06-11
Posts: 3

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

Offline

#2 2013-06-11 14:47:05

c4yolli
Member
Registered: 2013-06-11
Posts: 3

Re: OpenLayers: PNG on Vector Layer

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

Offline

#3 2013-06-11 15:08:06

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: OpenLayers: PNG on Vector Layer

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.

Offline

#4 2013-06-11 15:55:21

mmd
Member
Registered: 2010-11-06
Posts: 2,150

Re: OpenLayers: PNG on Vector Layer

Hallo,

nimm mal das hier als Beispiel: http://openlayers.org/dev/examples/sele … layer.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

Last edited by mmd (2013-06-11 15:59:07)

Offline

#5 2013-06-11 19:09:20

Oranger Assistent
Member
Registered: 2013-04-07
Posts: 92

Re: OpenLayers: PNG on Vector Layer

Tach.

c4yolli wrote:

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.

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

Last edited by Oranger Assistent (2013-06-11 22:11:30)

Offline

#6 2013-06-11 19:31:55

mmd
Member
Registered: 2010-11-06
Posts: 2,150

Re: OpenLayers: PNG on Vector Layer

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

Bilder UND Linien, Punkte, Polygone

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 cool

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.

Last edited by mmd (2013-06-11 23:08:18)

Offline

#7 2013-06-17 06:58:51

c4yolli
Member
Registered: 2013-06-11
Posts: 3

Re: OpenLayers: PNG on Vector Layer

Hallo,

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

Gruß
c4yolli

Offline

Board footer

Powered by FluxBB