x

Adresse auslesen von "nominatim" funktioniert nicht richtig!


Geschrieben von joergi2012 (Gast) am 12. März 2012 04:08:55: [flux]

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:

1. Die Koordinaten z.B. zur Adresse "40721 Hilden,Gerresheimer Str. 40" werden falsch wiedergegeben bzw. auf der Karte angezeigt.

2. 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>

Antworten: