Marker... Marker.Move?

tagchen,

das mit dem Verschieben eines Marker macht mich wahnsinnig.

Folgender Code:



function init() {
    var proj4326 = new OpenLayers.Projection('EPSG:4326');
    var projmerc = new OpenLayers.Projection('EPSG:900913');
    var lonlat   = new OpenLayers.LonLat($e, $n);
     var zoom     = 14;

    var map = new OpenLayers.Map('basicMap', {
        controls: [
            new OpenLayers.Control.KeyboardDefaults(),
            new OpenLayers.Control.MouseDefaults(),
            new OpenLayers.Control.LayerSwitcher(),
            new OpenLayers.Control.PanZoomBar(),
            new OpenLayers.Control.MousePosition(),
            new OpenLayers.Control.Attribution()],
        maxExtent:
            new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
        numZoomLevels: 18,
        maxResolution: 156543,
        units: 'm',
        projection: projmerc,
        displayProjection: proj4326
        
        
        
    });
    var mapnik_layer = new OpenLayers.Layer.OSM.Mapnik('Mapnik');
    var tah_layer    = new OpenLayers.Layer.OSM.Osmarender('Tiles@Home');
    var cycle_layer  = new OpenLayers.Layer.OSM.CycleMap('Fahrradkarte');
    var layer_marker = new OpenLayers.Layer.Markers('Marker');
    map.addLayers([mapnik_layer, tah_layer, cycle_layer, layer_marker]);
    lonlat.transform(proj4326, projmerc);
    map.setCenter(lonlat, zoom);
    
    var size     = new OpenLayers.Size(40,40);
    var offset   = new OpenLayers.Pixel(-(size.w/2), -size.h);
    var icon     = new OpenLayers.Icon('arrow.png', size, offset);
    layer_marker.addMarker(new OpenLayers.Marker(lonlat, icon));
    layer_marker.move(new OpenLayers.LonLat(4,55));
}


Das setzen eines Marker klappt soweit. Rufe ich aber ganz unten den Move auf, moved sich da gar nichts.
Hat jemand einen Vorschlag, was ich da (mal wieder) falsch gemacht habe?

hilft dieses Beispiel?

Mir kommt dieses “layer_marker.move()” in deinem Programm komisch vor: layer_marker ist ein ganzer Layer und Du willst nur einen Marker verschieben, der halt auf diesem Layer sitzt…

Grüße, Max

Okay, das mit dem Layer und der Verschiebung war Quatsch schäm

Habe das soweit mal korrigiert, der Marker wird nach wie vor angezeigt, aber verschieben lässt sich dieser aber nicht.

Nur zum Verständnis:

Ich definiere den Marker, adde das Layer, verschiebe den Marker? Adde ich dann das Layer neu ?

Danke schonmal für dein Feedback :slight_smile:

Viele Grüße
Ghost

Was hüpfende Punkte angeht, hab ich nur Erfahrung mit Layern vom Typ “OpenLayers.Layer.Vector” und darauf gesetzten Markern “OpenLayers.Feature.Vector( OpenLayers.Geometry.Point() … )”. Mit OpenLayers.Layer.Markers weiss ichs nicht, da hab ich immer nur mit feststehende Markern rumgebastelt.

Aber einen Layer neu hinzufügen muss man bei Openlayers eigentlich nie. Schlimmstenfalls muss man ein layer.redraw() aufrufen.

Vielen Dank für dein Feedback sowie dein Beispiel.
Dank diesem habe ich es doch hinbekommen, das Ganze dann ein wenig mit Ajax kombiniert und der Marker wird live aktualisiert :slight_smile:

Vielen Dank :wink: