[Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen.

Hallo Community,

habe ein kleines Problem das für Euch wahrscheinlich nicht so schwer zu lösen ist wie für mich :slight_smile:

Hier mein Beispielcode:


<script type="text/javascript">
    var map, layer;

    function init() {
        OpenLayers.ProxyHost = "/proxy.cgi?url=";
        map = new OpenLayers.Map('map', {
            controls: [
                new OpenLayers.Control.PanZoom(),
                new OpenLayers.Control.Permalink(),
                new OpenLayers.Control.Navigation()
            ]
        });
        layer = new OpenLayers.Layer.OSM("OpenStreetMap", null, {
            transitionEffect: 'resize',format:'image/jpeg',
        });
        map.addLayers([layer]);
        map.zoomToMaxExtent();
    }
    function submitform() {
        var queryString = document.forms[0].query.value;
        OpenLayers.Request.POST({
            url: "[http://www.openrouteservice.org/php/OpenLSLUS_Geocode.php](http://www.openrouteservice.org/php/OpenLSLUS_Geocode.php)",
            scope: this,
            failure: this.requestFailure,
            success: this.requestSuccess,
            headers: {"Content-Type": "application/x-www-form-urlencoded"},
            data: "FreeFormAdress=" + encodeURIComponent(queryString) + "&MaxResponse=1"
        });
    }
    function requestSuccess(response) {
        var format = new OpenLayers.Format.XLS();
        var output = format.read(response.responseXML);
        if (output.responseLists[0]) {
            var geometry = output.responseLists[0].features[0].geometry;
            var foundPosition = new OpenLayers.LonLat(geometry.x, geometry.y).transform(
                    new OpenLayers.Projection("EPSG:4326"),
                    map.getProjectionObject()
                    );
                    
            map.setCenter(foundPosition, 16);
        } else {
            alert("Sorry, no address found");
        }
    }
    function requestFailure(response) {
        alert("An error occurred while communicating with the OpenLS service. Please try again.");
    }

</script>
Adressuche:
_______________________________________________________________________________________________________________________________

Hier soll dann auf dem Suchergebnis im Zentrum der Map ein Marker angezeigt werden. - Natürlich habe ich vor diesem Post erst mal ein paar Referenze gewälzt.

Hier der BeispielCode um einen Marker zu positionieren:


var lonLat = new OpenLayers.LonLat( -0.1279688 ,51.5077286 )
.transform(
new OpenLayers.Projection(“EPSG:4326”), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
);

var zoom=16;

var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);

markers.addMarker(new OpenLayers.Marker(lonLat));

map.setCenter (lonLat, zoom);
_______________________________________________________________________

Bei genauerer Betrachtung stellt man aber fest, das der Marker vorher auf eine bestimmte position definiert wurde(OpenLayers.LonLat( -0.1279688 ,51.5077286 )).
Für mein Problem muss LonLat für den Marker aber aus dem Suchergebnis kommen.

Hat jemand von Euch vielleicht einen Ansatz, wie bzw. wo das im oberen Code zu bewerkstelligen wäre?

Schon mal Dank :smiley: :smiley: :smiley:

OK, trotzdem vielen Dank :slight_smile: Habs schon glücklicherweise selbst lösen können.

Hier aber der Code falls es mal jemand braucht.
____________________________________________________________________________________-

function requestSuccess(response) {
var format = new OpenLayers.Format.XLS();
var output = format.read(response.responseXML);
if (output.responseLists[0]) {
var geometry = output.responseLists[0].features[0].geometry;
var foundPosition = new OpenLayers.LonLat(geometry.x, geometry.y).transform(
new OpenLayers.Projection(“EPSG:4326”),
map.getProjectionObject()
);

            map.setCenter(foundPosition, 16);
            var lonLat = new OpenLayers.LonLat(geometry.x, geometry.y )
      .transform(
        new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
        map.getProjectionObject() // to Spherical Mercator Projection
      );

var zoom=16;

var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);

markers.addMarker(new OpenLayers.Marker(lonLat));

map.setCenter (lonLat, zoom);


_______________________________________________________________-

Kleine Frage: Wie so nicht Nominatim? Suchst du Adressen oder was spezielles?

Gruss
walter

Hi Walter,

bin nicht sicher ob ich die Frage richtig verstehe. Ich brauche einfach eine Adressuche das ist korrekt. Nominatim hatte ich noch garnicht auf dem Schirm.
Vielen Dank und einen schönen Abend noch.
Toby

Deiner Antwort nach hast du vermutlich richtig verstanden :wink:

Wirklich nicht? Schau mal ganz rechts oben auf “deinen Schirm”, wenn du http://www.openrouteservice.org/ aufrufst.

Gruss
walter

Und die Zeile darüber ist auch nicht uninteressant. Der ORS-Datenbestand feiert bald sein Einjähriges.