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