Marker aus CSV laden, verschieben und dann wieder speichern

Hallo Zusammen,

aktuell habe ich als Baselayer ein Image (Lageplan). Hier lade ich einige Marker aus einer CSV Datei hinzu.
Das Verschieben der Marker klappt auch schon, jedoch habe ich noch keinen Ansatzpunkt wie ich die neue Position dauerhaft wieder in der CSV Datei speichern kann.
Zusätzlich würde ich gerne neue Marker per Button hinzufügen können.

Wer kann mir hier weiterhelfen?

Danke
Mark

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <title>Lageplan</title>
    <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <style type="text/css">
        p.caption {
            width: 512px;
        }
    </style>
    <script src="../lib/Firebug/firebug.js"></script>
    <script src="../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var map;
        function init(){
            map = new OpenLayers.Map('map');

            var graphic = new OpenLayers.Layer.Image(
                'Lageplan',
                'data/ofmap.png',
                new OpenLayers.Bounds(0,0,4681,3311),
                new OpenLayers.Size(4681,3311),
                {numZoomLevels: 8, maxResolution: 10}
            );
            

            map.addLayers([graphic]);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
			map.addControl(new OpenLayers.Control.MousePosition());
			map.addControl(new OpenLayers.Control.OverviewMap());
            map.zoomToMaxExtent();
			
			
			
			var vectors = new OpenLayers.Layer.Text( "Vector Layer", {location: "./daten.csv"} );
        
            // allow testing of specific renderers via "?renderer=Canvas", etc
            var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
            renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;

            vectors = new OpenLayers.Layer.Vector("Vector Layer", {
                renderers: renderer
            });

            map.addLayers([vectors]);

           			
            if (console && console.log) {
                function report(event) {
                    console.log(event.type, event.feature ? event.feature.id : event.components);
                }
                vectors.events.on({
                    "beforefeaturemodified": report,
                    "featuremodified": report,
                    "afterfeaturemodified": report,
                    "vertexmodified": report,
                    "sketchmodified": report,
                    "sketchstarted": report,
                    "sketchcomplete": report
                });
            }
			
            controls = {
                point: new OpenLayers.Control.DrawFeature(vectors,
                            OpenLayers.Handler.Point),
                line: new OpenLayers.Control.DrawFeature(vectors,
                            OpenLayers.Handler.Path),
                polygon: new OpenLayers.Control.DrawFeature(vectors,
                            OpenLayers.Handler.Polygon),
                regular: new OpenLayers.Control.DrawFeature(vectors,
                            OpenLayers.Handler.RegularPolygon,
                            {handlerOptions: {sides: 5}}),
                modify: new OpenLayers.Control.ModifyFeature(vectors)
            };
            
            for(var key in controls) {
                map.addControl(controls[key]);
            }
            
            map.setCenter(new OpenLayers.LonLat(0, 0), 3);
            document.getElementById('noneToggle').checked = true;
		
        }
		
		    function update() {
            // reset modification mode
            controls.modify.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
            var rotate = document.getElementById("rotate").checked;
            if(rotate) {
                controls.modify.mode |= OpenLayers.Control.ModifyFeature.ROTATE;
            }
            var resize = document.getElementById("resize").checked;
            if(resize) {
                controls.modify.mode |= OpenLayers.Control.ModifyFeature.RESIZE;
                var keepAspectRatio = document.getElementById("keepAspectRatio").checked;
                if (keepAspectRatio) {
                    controls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
                }
            }
            var drag = document.getElementById("drag").checked;
            if(drag) {
                controls.modify.mode |= OpenLayers.Control.ModifyFeature.DRAG;
            }
            if (rotate || drag) {
                controls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
            }
            controls.modify.createVertices = document.getElementById("createVertices").checked;
            var sides = parseInt(document.getElementById("sides").value);
            sides = Math.max(3, isNaN(sides) ? 0 : sides);
            controls.regular.handler.sides = sides;
            var irregular =  document.getElementById("irregular").checked;
            controls.regular.handler.irregular = irregular;
        }

        function toggleControl(element) {
            for(key in controls) {
                var control = controls[key];
                if(element.value == key && element.checked) {
                    control.activate();
                } else {
                    control.deactivate();
                }
            }
        }
 
		
		
		
		
		
		
		
    </script>
  </head>
  
  <body onload="init()">
    <h1 id="title">Lageplan</h1>

    <div id="tags">
        image, imagelayer
    </div>

    <p id="shortdesc">
        Übersciht der Stationen, MSHV, NSHV und UV's
    </p>

    <div id="map" class="smallmap"></div>

	<div id="controls">
        <ul id="controlToggle">
            <li>
                <input type="radio" name="type" value="none" id="noneToggle"
                       onclick="toggleControl(this);" checked="checked" />
                <label for="noneToggle">navigate</label>
            </li>
            <li>
                <input type="radio" name="type" value="point" id="pointToggle" onclick="toggleControl(this);" />
                <label for="pointToggle">draw point</label>
            </li>
            <li>
                <input type="radio" name="type" value="line" id="lineToggle" onclick="toggleControl(this);" />
                <label for="lineToggle">draw line</label>
            </li>
            <li>
                <input type="radio" name="type" value="polygon" id="polygonToggle" onclick="toggleControl(this);" />
                <label for="polygonToggle">draw polygon</label>
            </li>
            <li>
                <input type="radio" name="type" value="regular" id="regularToggle" onclick="toggleControl(this);" />
                <label for="regularToggle">draw regular polygon</label>
                <label for="sides"> - sides</label>
                <input id="sides" type="text" size="2" maxlength="2"
                       name="sides" value="5" onchange="update()" />
                <ul>
                    <li>
                        <input id="irregular" type="checkbox"
                               name="irregular" onchange="update()" />
                        <label for="irregular">irregular</label>
                    </li>
                </ul>
            </li>
            <li>
                <input type="radio" name="type" value="modify" id="modifyToggle"
                       onclick="toggleControl(this);" />
                <label for="modifyToggle">modify feature</label>
                <ul>
                    <li>
                        <input id="createVertices" type="checkbox" checked
                               name="createVertices" onchange="update()" />
                        <label for="createVertices">allow vertices creation</label>
                    </li>
                    <li>
                        <input id="rotate" type="checkbox"
                               name="rotate" onchange="update()" />
                        <label for="rotate">allow rotation</label>
                    </li>
                    <li>
                        <input id="resize" type="checkbox"
                               name="resize" onchange="update()" />
                        <label for="resize">allow resizing</label>
                        (<input id="keepAspectRatio" type="checkbox"
                               name="keepAspectRatio" onchange="update()" checked="checked" />
                        <label for="keepAspectRatio">keep aspect ratio</label>)
                    </li>
                    <li>
                        <input id="drag" type="checkbox"
                               name="drag" onchange="update()" />
                        <label for="drag">allow dragging</label>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
  	
    <div id="docs">
        <p class="caption">
            Mark
        </p>
    </div>
	
  </body>
</html>

Nahmd,

Die Aufgabe ist zum einen einfach, denn OpenLayers enthält bereits Komponenten, mit denen Du Features zum Server übertragen kannst.

Andererseits ist sie schwierig, denn Du brauchst eine aktive Komponente auf dem Server, sei es ein Skript in einer bereitgestellten Skriptsprache, sei es ein CGI in einer unterstützten Programmiersprache, das die neuen oder geänderten POIs in einer Datei oder in einer Datenbank speichert. Und die muss auf Deine Umgebung abgestimmt sein/werden.

Vielleicht hilft Dir diese Diskussion weiter? Da ging es um Polygonflächen, aber POIs sind damit sehr wahrscheinlich auch machbar.

Wenn Du auf Deinem Server eine Datenbank hast oder einrichten kannst, geht möglicherweise mein POI-Editor in die richtige Richtung (Seite runterscrollen für weitere Information). Aber Achtung: bis auf die Anleitung auf der Seite gibt es von mir keine Unterstützung, alldieweil ich mich in Kürze in den Urlaub verabschiede.

Gruß Wolf

Hallo,

danke @Netzwolf.

Mein erster Test funktioniert mit deinem Editor auch gut.
Leider muss es später mit dem Internet Explorer laufen.
Hier gibt es anscheinend Probleme mit der Datenübergabe per Post request an die Poiserver.php.

Weiß hier jemand einen Rat? (Post request per Internetexplorer)
Mit Firerfox gibts keine Probleme.

Gruß Mark