Hi,
ich programmiere zur Zeit an einem Script, das aus einer Datenbank eine Adresse liest. Dann soll im ersten Schritt versucht werden, die genaue Adresse automatisch mittels “nominatim” zu lokalisieren. Im zweiten Schritt wird die Karte mit dem gefundenen Standort (nadel.png) aufgebaut. Sollte der gefundene Standort nicht mit dem gewünschten Standort genau übereinstimmen, kann man dies korrigieren, indem man mit der Maus über die Karte fährt. Die Koordinaten werden dabei angezeigt. Mit einem Mausklick, wird dann die eventuell korrigierte Position übernommen. Soweit die Theorie. Leider gibt es in der Praxis einige Probleme:
-
Die Koordinaten z.B. zur Adresse “40721 Hilden,Gerresheimer Str. 40” werden falsch wiedergegeben bzw. auf der Karte angezeigt.
-
Wie kann ich die Koordinaten in einer Datei auf meinem Server speichern? Ich dachte dabei, die Koordinaten z.B. in einem Formularfeld darzustellen und dann per php auszulesen und zu speichern. Aber wie bekomme ich die Koordinaten in das Formularfeld?
Ich hoffe, Ihr könnt mir helfen. Ich bin leider ratlos!!!
<?php
$adresse="40721 Hilden,Gerresheimer Str. 40";
$pos = file_get_contents('http://nominatim.openstreetmap.org/search?format=json&q='.$adresse);
$pos2 = json_decode($pos);
$lat=$pos2[0]->lat;
$lon=$pos2[0]->lon;
?>
<style type="text/css">.olControlAttribution { bottom: 3px!important; }</style>
<script src="OpenLayers/OpenLayers.js">
</script><script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js">
</script>
<div id="map" style="width:750px;height:510px;"></td></tr></table></div>'
<script type="text/javascript" src="OpenLayers/OpenLayers_Map_minZoom_maxZoom_Patch.js"></script>
<script type="text/javascript" src="OpenLayers/my_panzoombar.js"></script>
<script type="text/javascript">
var map;
function showMap()
{
map = new OpenLayers.Map("map",
{
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0399,
units: "m",
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
controls: [],
minZoom:12,
maxZoom:18
});
map.addControl (new OpenLayers.Control.LayerSwitcher());
map.addControl (new OpenLayers.Control.Navigation());
map.addControl (new OpenLayers.Control.MousePosition());
map.addControl (new OpenLayers.Control.PanZoomBar({minZoom: 12}));
OpenLayers.Marker.defaultIcon = function () {
return new OpenLayers.Icon ("symbole/nadel.png", {w:35, h:41}, {x: -10, y:-30});
};
var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik (updated weekly)");
var layerTah = new OpenLayers.Layer.OSM.Osmarender("Tiles@Home");
map.addLayers([layerMapnik]);
map.setCenter(new OpenLayers.LonLat(<?php echo $lon; ?>,<?php echo $lat; ?>).transform(new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")), 14);
map.addLayer(new OpenLayers.Layer.Markers("Standort"));
var marker = new OpenLayers.Marker(map.getCenter());
marker.events.register("mousedown", marker, function(evt)
{
OpenLayers.Event.stop(evt);
}
);
map.layers[map.layers.length-1].addMarker(marker);
}
showMap();
</script>
</div>
</body>
</html>