Marker verschieben...

Hallo,

ich versuche für ein Fahrzeugmanagment meine Marker nach einer gewissen Zeit neu zu laden.
Das realisiere ich bisher mit einem “standort.refresh()”.


var standort = new OpenLayers.Layer.Vector('Standort',
{
    displayInLayerSwitcher: false,
    strategies: [new OpenLayers.Strategy.Fixed()],
    protocol: new OpenLayers.Protocol.HTTP({url: 'standort.php',
    params: {bbox: map.getExtent().transform(new OpenLayers.Projection('EPSG:4326'), map.getProjectionObject()).toBBOX()},
    format: new OpenLayers.Format.GeoJSON()}),

    eventListeners: {
    'loadend': function() {reload = setTimeout('standort.refresh()', 10000);}, 
    'moveend': function() {if (standort){standort.protocol.params.bbox = map.getExtent().transform(map.getProjectionObject(), new OpenLayers.Projection('EPSG:4326')).toBBOX();}}
    },

    styleMap: new OpenLayers.StyleMap({
    'default': {externalGraphic: '${icon}.png', graphicWidth: 26, graphicHeight: 26},
    })
});

Ist es möglich, die Marker zu verschieben anstelle sie neu zu laden?
Ich gehe davon aus, das ich jedem Marker eine eindeutige Id zuordnen muß, damit auch der richtige Marker an die richtige Stelle verschoben wird.
Danach sollte geprüft werden, ob der Marker bereits vorhanden ist.
Wenn ja, verschieben. Wenn nein, neu einzeichnen bzw löschen.

Hab mir bereits dieses Beispiel (http://geo.dianacht.de/tests/wanderpunkt.html) angesehen, aber darin wird ja nur ein einzelner Marker verschoben.

In der Theorie ganz einfach… :slight_smile: Aber praktisch… :frowning:
Hat vielleicht jemand einen Ansatz, wie dies realisiert werden könnte?

Gruß Wayne

Hi Wayne,

das soll wohl auch durch direkte Änderung an der Geometrie gehen:
http://osgeo-org.1803224.n2.nabble.com/animation-in-openlayers-td5673453.html

Ich hab mir die Beispiele dort mal angeschaut, vielen Dank.
Aber dort handelt es sich ja um fest “eingetragene” Marker.

Vielleicht hab ich auch nen falschen Ansatz, aber meine Marker sollten ja erst mal genau per id bestimmt werden.
Diese wird ja auch bereits per standort.php übertragen.
Nur daran scheitert es leider schon… :slight_smile:

Interessant sind auch diese beiden Beiträge:
http://forum.openstreetmap.org/viewtopic.php?id=3535

Besonders der von maxbe und seinen Hüpfmarkern:
http://forum.openstreetmap.org/viewtopic.php?id=11446

Aber mir fehlt da einfach der Ansatz.

Hoffnungsvolle Grüße
Wayne

Hallo Wayne,
Du musst ja gleich mehrere Marker generieren, probier mal (modifziert aus http://geo.dianacht.de/tests/wanderpunkt.html#))
marker[id] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(laenge[id],breite[id]).transform(map.displayProjection,map.projection),null,markerstyle);
zur Generierung

und zum Verschieben:
marker[id].move(new OpenLayers.LonLat(new_laenge[id],new_breite[id]).transform(map.displayProjection,map.projection));

Grüße aus BW

Ich denke Openlayers hat da nichts geeignetes zum dynamischen Punkterücken (und löschen und neu anlegen! das ist ja noch eine Stufe komplizierter als nur das Verschieben einer schon am Anfang angelegten Menge von Punkten).

Das wirst selber bauen müssen: Also Datei einlesen → Punkte als Array/Hash… anlegen wie oben bei fx99 → Pause → Datei wieder einlesen → Punkte alle durchgehen, gelöschte löschen, neue anlegen, verschobene verschieben → Pause → Date wieder einlesen → …
Ob das dann eleganter, schneller, flimmerfreier abläuft als ein reload, wäre auszuprobieren.

Grüße, Max

Danke für eure Ansätze… :slight_smile:
Ich werd mich mal ne Runde dran setzen und meld mich dann wieder.

@fx99: Auch von mir die besten Grüße aus BW. > Vergess dein Kreuzchen heut nicht. :smiley: