x

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


  1. [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · SM5K (Gast) · 01.10.2013 17:23 · [flux]

    Hallo Community,

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

    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/Ope … eocode.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>
    </head>
    <body onload="init()">
    <form name="input" action="javascript: submitform();" method="post">
    <label for="query">Adressuche:</label> <input type="text" id="query" size=50 name="query"
    value="Hier bitte den Ort eintippen"/>
    <input type="submit" value="Submit"/>
    </form>

    <br>

    <div
    id="map"
    style="width:1024px; height:512px; border:3px solid #000">
    </div>

    </body>
    </html>
    _______________________________________________________________________________________________________________________________

    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);
    </script>
    _______________________________________________________________________

    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 😄 😄 😄


    • Re: [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · SM5K (Gast) · 01.10.2013 17:42 · [flux]

      OK, trotzdem vielen Dank 🙂 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);

      .......................
      _______________________________________________________________-


    • Re: [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · wambacher (Gast) · 01.10.2013 17:52 · [flux]

      SM5K wrote:

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

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

      Gruss
      walter


    • Re: [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · SM5K (Gast) · 01.10.2013 19:01 · [flux]

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

      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


    • Re: [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · rayquaza (Gast) · 01.10.2013 19:13 · [flux]

      SM5K wrote:

      bin nicht sicher ob ich die Frage richtig verstehe.

      Deiner Antwort nach hast du vermutlich richtig verstanden 😉


    • Re: [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · wambacher (Gast) · 01.10.2013 20:20 · [flux]

      SM5K wrote:

      Nominatim hatte ich noch garnicht auf dem Schirm.

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

      Gruss
      walter



    • Re: [Gelöst]Marker im Zentrum eines Suchergebnisses anzeigen. · Oli-Wan (Gast) · 01.10.2013 20:26 · [flux]

      wambacher wrote:

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

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