x

Polyline und Marker auf einer Karte


  1. Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 26.08.2010 20:38 · [flux]

    Hallöchen,

    ich fische mir diverse Koordinaten aus einer Datenbank.

    Diese Koordinaten werden dann per Polyline miteinander verbunden. Zudem möchte ich, dass jeder Wegpunkt mit einem Marker versehen wird.
    Beides im einzelnen funktioniert, aber ich bekomme irgendwie nicht beides unter einen Hut.

    Code -> Koordinaten zu einer Polyline:

    <body onLoad="">
    <div id="wrap">
    <div id="header">
    </div>
    <div class="middle">
    <p/>
    <div id="gmap" class="mapstraction" style="height: 300px;width: 100%;"></div>
    <script type="text/javascript">

    function poly(map) { // ANFANG function poly(map)
    map.setCenterAndZoom(new LatLonPoint(<?php echo $koord_n[$half_rows]; ?>,<?php echo $koord_e[$half_rows]; ?>), 13);
    map.setMapType(Mapstraction.ROAD);
    var myPoly = new Polyline([new LatLonPoint(<?php echo $koord_n[0]; ?>,<?php echo $koord_e[0]; ?>),

    <?php
    for($i=0;$i<$rows;$i++)
    {
    echo "new LatLonPoint($koord_n[$i],$koord_e[$i]),";
    }
    ?>

    new LatLonPoint(<?php echo $koord_n[$rows-1]; ?>,<?php echo $koord_e[$rows-1]; ?>)]);
    map.addPolyline(myPoly);

    } // ENDE function poly(map)

    var gmapstraction = new Mapstraction('gmap','openlayers');
    poly(gmapstraction)

    </script>

    <br/>
    </div>
    </body>

    Separat funktioniert dieser.

    Code -> Marker zu Koordinate:

    <body>
    <div id='mapdiv'></div>
    <script src='http://www.openlayers.org/api/OpenLayers.js'></script>
    <script>
    map = new OpenLayers.Map('mapdiv');
    map.addLayer(new OpenLayers.Layer.OSM());
    var zoom=16;
    var markers = new OpenLayers.Layer.Markers( 'Markers' );

    <?php

    for($i=0;$i<$rows;$i++)
    {

    echo "var size = new OpenLayers.Size(25,25);";
    echo "var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);";
    echo "var icon = new OpenLayers.Icon('337-5.png',size,offset); ";
    echo "var lonLat = new OpenLayers.LonLat($koord_e[$i], $koord_n[$i]).transform(new OpenLayers.Projection(\"EPSG:4326\"),
    map.getProjectionObject());\n";
    echo "map.addLayer(markers);\n";
    echo "markers.addMarker(new OpenLayers.Marker(lonLat,icon));\n";
    }

    >

    map.setCenter (lonLat, zoom);

    </script>
    </body>

    Funktioniert separat ebenfalls.

    Mein Problem ist nun, dass ich es auch nach stundenlanger Tüftelei nicht schaffe, eine Polyline und Marker auf eine Karte zu plotten.

    Kann jemand von euch sehen, worauf das zurückzuführen ist?

    Vielen Dank auch diesmal im Voraus ;-)

    Boris


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 12:05 · [flux]

      Ich kotz gleich.

      Wieder den halben Tag dran und es löppt immer noch nicht.

      Kann mir jemand sagen, was an folgendem falsch ist?

      <script type="text/javascript">

      function poly(map) { // ANFANG function poly(map)
      map.setCenterAndZoom(new LatLonPoint(53.54228616418,7.95232785734), 13);
      map.setMapType(Mapstraction.ROAD);

      var myPoly = new Polyline([new LatLonPoint(53.521322914699994,8.10167292664),

      new LatLonPoint(53.521322914699994,8.10167292664),
      new LatLonPoint(53.521322914699994,8.10167292664),
      new LatLonPoint(53.52121291514,8.10180459278),

      GEKÜRZT
      new LatLonPoint(53.52121291514,8.10180459278)]);

      map.addPolyline(myPoly);

      }
      function marker(map)
      {
      var markers = new OpenLayers.Layer.Markers( 'Markers' );
      map.addLayer(markers);
      var size = new OpenLayers.Size(25,25);
      var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
      var icon = new OpenLayers.Icon('292-5.png',size,offset);

      markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(8.10167292664,53.521322914699994),icon));
      }

      var gmapstraction = new Mapstraction('gmap','openlayers');
      poly(gmapstraction)
      marker(gmapstraction)

      </script>

      Die Polyline wird wunderbar auf die Karte geplottet, aber das mit dem Marker haut immernoch nicht hin.

      Irgendwo badet doch der Hase hier im Pfeffer, oder?

      Viele Grüße,

      Boris


    • Re: Polyline und Marker auf einer Karte · efred (Gast) · 27.08.2010 12:13 · [flux]

      möglicherweise liegt es da dran:
      einmal arbeitest du mit LatLon und beim Marker mit LonLat.

      Gibt es deshalb vielleicht einen Konflikt und der Marker wird irgendwo rechts neben Afrika im Meer gesetzt?


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 12:24 · [flux]

      Nein, der Marker taucht nirgendwo auf.
      Das "Afrika Phänomen" war mir schon aus vorangegangenen Tests bekannt, da die Koordinaten zum Teil verdreht waren (ich bin es gewohnt, erst die Breite, dann die Länge zu verwenden).

      Aber das war es leider auch nicht.

      Habe ich vielleicht irgendwo irgendwelche Syntaxfehler im Code, der sich um den Marker kümmert?


    • Re: Polyline und Marker auf einer Karte · fx99 (Gast) · 27.08.2010 15:21 · [flux]

      schau Dir mal http://hwri.funpic.de/OSM_circle/GPXCIRC.js an.
      Mir scheint, Du musst
      8.10167292664,53.521322914699994
      erst in Mercator Koordinaten konvertieren.

      point = this.setToMercator(llon,llat);


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 15:47 · [flux]

      Der Part mit den Polylines selber funktioniert ja tadellos, so wie er soll. Der springende Punkt ist unten der Bereich function marker().
      Die Marker erscheinen einfach nicht, ich habe heute schon wieder den ganzen Tag mit dieser Geschichte zugebracht, aber es will mir nicht gelingen, Marker und Polylines auf die Karte zu bringen.


    • Re: Polyline und Marker auf einer Karte · fx99 (Gast) · 27.08.2010 15:58 · [flux]

      fx99 wrote:

      schau Dir mal http://hwri.funpic.de/OSM_circle/GPXCIRC.js an.
      Mir scheint, Du musst
      8.10167292664,53.521322914699994
      erst in Mercator Koordinaten konvertieren.

      point = this.setToMercator(llon,llat);

      Das war wohl etwas zu verkürzt.

      bei der Polyline hast Du die Transformation
      LatLonPoint(53.521322914699994,8.10167292664)

      bei den Markern nur
      OpenLayers.LonLat(8.10167292664,53.521322914699994)

      schreib da mal hin
      LatLonPoint(53.521322914699994,8.10167292664)

      wenn das nicht hilft, brech die Formaln auf und lass Dir die Ergebnisse mit
      alert ( ) anzeigen.


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 16:26 · [flux]

      Ausprobiert, rumprobiert, noch immer werden die Polylines eingebunden, nicht aber ein einziger Marker.
      Bin kurz davor, den Kram einfach sein zu lassen.


    • Re: Polyline und Marker auf einer Karte · efred (Gast) · 27.08.2010 16:48 · [flux]

      Also, nur Marker, ohne Poly geht?
      Ist zwar nicht die sauberste Art, aber mach doch in diesem Fall zwei Layer - einen für Marker und einen für die Polyline. und blende dann beide ein. sollte eigentlich so machbar sein.


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 17:22 · [flux]

      Wenn du noch einen Tip hast, wie ich das machen kann?


    • Re: Polyline und Marker auf einer Karte · robotnic (Gast) · 27.08.2010 17:37 · [flux]

      Ghostrider82 wrote:

      Ausprobiert, rumprobiert, noch immer werden die Polylines eingebunden, nicht aber ein einziger Marker.
      Bin kurz davor, den Kram einfach sein zu lassen.

      Wenn es nicht unbedingt openlayers sein muss...

      Hier die Lösung mit khtmlib:

      http://www.khtml.org/osm/v0.82/examples/test.html

      lg, Bernhard


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 18:01 · [flux]

      Bevor ich das nun im Schweiße meines Angesichtes versuche...hast du Erfahrungen, eine Linie UND Marker mit khtmlib einzubinden? Klappt das?


    • Re: Polyline und Marker auf einer Karte · robotnic (Gast) · 27.08.2010 18:05 · [flux]

      Ghostrider82 wrote:

      Bevor ich das nun im Schweiße meines Angesichtes versuche...hast du Erfahrungen, eine Linie UND Marker mit khtmlib einzubinden? Klappt das?

      Das Beispiel hat eine Line mit 4 Punkten und 2 Marker (Fahnen).
      Fehlt da etwas?

      lg, Bernhard


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 18:20 · [flux]

      Oh pardon. Die Fahnen habe ich gar nicht gesehen *schäm*

      Aber schaut gut aus, damit werde ich mich gleich mal versuchen.

      Falls aber jemand noch eine Antwort auf mein eigentliches Problem hat, immer her damit. Ich bin doof geboren, möchte aber nicht doof sterben ;-)


    • Re: Polyline und Marker auf einer Karte · fx99 (Gast) · 27.08.2010 18:24 · [flux]

      Hier funktioniert es auch mit OL: http://hwri.hw.funpic.de/OSM_circle/RW-BB.htm

      Stell mal Deine Datei(en) komplett wo hin, dann versuch ich es auch mal.


    • Re: Polyline und Marker auf einer Karte · Ghostrider82 (Gast) · 27.08.2010 21:39 · [flux]

      fx, nützen dir die Datei(en) denn etwas? Dir fehlen doch die ganzen Koordinaten, die aus der DB kommen.

      Der Link von robotnic hat mich übrigens in Rekordzeit zum Ergebnis geführt. Es hat meinen Fehler im Code nicht erklärt, aber das ermöglicht, was ich wollte.


    • Re: Polyline und Marker auf einer Karte · fx99 (Gast) · 27.08.2010 21:41 · [flux]

      Ghostrider82 wrote:

      fx, nützen dir die Datei(en) denn etwas? Dir fehlen doch die ganzen Koordinaten, die aus der DB kommen.

      Der Link von robotnic hat mich übrigens in Rekordzeit zum Ergebnis geführt. Es hat meinen Fehler im Code nicht erklärt, aber das ermöglicht, was ich wollte.

      Es sollte auch mit der Handvoll Koordinaten testbar sein, die hier im Forum stehen. Aber wenn Du schon eine Lösung hast,
      dann brauch ich keine Zeit mehr darauf verwenden. Die robotnic Version schau ich mir auch mal an.


    • Re: Polyline und Marker auf einer Karte · robotnic (Gast) · 27.08.2010 23:22 · [flux]

      fx99 wrote:

      Ghostrider82 wrote:

      fx, nützen dir die Datei(en) denn etwas? Dir fehlen doch die ganzen Koordinaten, die aus der DB kommen.

      Der Link von robotnic hat mich übrigens in Rekordzeit zum Ergebnis geführt. Es hat meinen Fehler im Code nicht erklärt, aber das ermöglicht, was ich wollte.

      Es sollte auch mit der Handvoll Koordinaten testbar sein, die hier im Forum stehen. Aber wenn Du schon eine Lösung hast,
      dann brauch ich keine Zeit mehr darauf verwenden. Die robotnic Version schau ich mir auch mal an.

      Da gibt es übrigens die API Dokumentation
      http://www.khtml.org/osm/v0.82/doc/
      Die Doku ist ganz neu.