ich jetzt schon so einige Seiten durch aber leider noch nicht das gefunden was ich suche.
Ich würde gerne mit OSM mir eine Adresse mittels eines Markers anzeigen lassen und diesen dann bei Bedarf auch noch die Möglichkeit zu geben ihn neu oder besser zu Positionieren.
Das heißt er soll mir eine Adresse anzeigen und der User hat dann die Möglichkeit die Anzeige noch zu verfeinern weil er weiß wo die genaue Hausnummer liegt. Und dann am Ende habe ich die korrekten Kooridinaten zum Auslesen.
Hat da schon jemand Erfahrungen gesammelt oder eine Idee wie ich das umsetzten könnte?
Als Beispiele habe ich das mal bei Google Maps gefunden:
// Add a drag feature control to move features around.
var dragFeature = new OpenLayers.Control.DragFeature(layer);
map.addControl(dragFeature);
dragFeature.activate();
ich habe mal ein wenig damit rumprobiert bin aber leider zu keinem Erfolg gekommen.
Ich habe das Problem mir die Marker anzeigen zu lassen. In meinen bisherigen Script lasse ich mir einen Marker anzeigen aber der hat eine feste Position vorgegeben.
Wie muss ich “OpenLayers.Control.DragFeature” in dieses Script einarbeiten?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OpenLayers: Vector Graphics with Shadows</title>
<link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="../lib/OpenLayers.js" type="text/javascript"></script>
<script type="text/javascript">
var SHADOW_Z_INDEX = 10;
var MARKER_Z_INDEX = 11;
var objekt;
var map, layer;
function init() {
map = new OpenLayers.Map("map");
layer = new OpenLayers.Layer.Vector( //1.) layer
"Marker Drop Shadows", //2.) style für layer
{
styleMap: new OpenLayers.StyleMap({
externalGraphic: "../img/marker-gold.png",
backgroundGraphic: "./marker_shadow.png",
backgroundXOffset: 0,
backgroundYOffset: -7,
graphicZIndex: MARKER_Z_INDEX,
backgroundGraphicZIndex: SHADOW_Z_INDEX,
pointRadius: 10
}),
isBaseLayer: false,
rendererOptions: {yOrdering: true}
}
);
var wmsLayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'});
map.addLayers([layer,wmsLayer]); //3.)layer zu map hinzufügen
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
// Add a drag feature control to move features around.
var dragFeature = new OpenLayers.Control.DragFeature(layer); //4.) layer zu dragFeature
map.addControl(dragFeature);
dragFeature.activate();
map.zoomToMaxExtent();
drawFeatures();
}
function drawFeatures() {
layer.removeFeatures(layer.features);
var center = map.getViewPortPxFromLonLat(map.getCenter());
var pixel = new OpenLayers.Pixel(center.x , center.y );
var lonLat = map.getLonLatFromViewPortPx(pixel);
feature=(new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat)
));
layer.addFeatures(feature);
}
function draw(){
feature.geometry.x=feature.geometry.x+3.0; // hier gewünschte Position übergeben
//feature.geometry.y=11; // hier gewünschte Position übergeben
layer.redraw();
}
</script>
</head>
<body onload="init()">
<br>
<table>
<tr>
<td>
<div id="map" class="smallmap"></div>
</td>
</tr>
<tr>
<td>
<button onclick="drawFeatures()">Redraw Features</button><br />
<button onclick="draw()">Verschieben</button>
</td>
</tr>
</table>
</body>
</html>
Man kann dem verschiebbaren Marker eine beliebge Position zuweisen. Marker wird dann auch korrekt verschoben, nur ein Problem gibt es:
Beim hineinzoomen verschwindet der Vektor-Marker plötzlich… weiß einer warum?