x

OpenLayer.Layer.Vector KML Datei wird nicht angezeigt


  1. OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Bytechanger (Gast) · 28.07.2009 13:18 · [flux]

    Hallo,

    ich versuche seit Tagen Marker über eine KML Datei
    auf meiner Karte anzuzeigen...

    Leider funktioniert es nicht. Ich bekomme nichts angezeigt...

    Ich nutze die KML-Datei, da ich verschiedene Ereignispunkte mit
    verschiedenen Icons und einem Popup darstellen möchte....

    var␣zip_layer␣=␣new␣OpenLayers.Layer.Vector("KML",␣{
    format:␣OpenLayers.Format.KML,
    extractAttributes:␣true
    });
    
    var␣kml␣=␣new␣OpenLayers.Format.KML().read("lines.kml");
    zip_layer.addFeatures(kml);
    map.addLayer(zip_layer);
    
    //␣select␣*should␣be␣global
    select␣=␣new␣OpenLayers.Control.SelectFeature(zip_layer);
    
    zip_layer.events.on({
    "featureselected":␣onFeatureSelect,
    "featureunselected":␣onFeatureUnselect
    });
    
    map.addControl(select);
    select.activate();
    

    und hier die KML

    <?xml␣version="1.0"␣encoding="UTF-8"?>
    <kml␣xmlns="http://earth.google.com/kml/2.2">
    <Document>
    
    <StyleMap␣id="Wo1">
    <Pair>
    <key>normal</key>
    <styleUrl>#Wo1_n</styleUrl>
    </Pair>
    <Pair>
    <key>highlight</key>
    <styleUrl>#Wo1_s</styleUrl>
    </Pair>
    </StyleMap>
    <Style␣id="Wo1_n">
    <IconStyle>
    <scale>1</scale>
    <Icon>
    <href>stecknadel_rot.png</href>
    </Icon>
    <hotSpot␣x="23"␣y="48"␣xunits="pixels"␣yunits="pixels"/>
    </IconStyle>
    <LabelStyle>
    <color>ff00aaff</color>
    </LabelStyle>
    </Style>
    <Style␣id="Wo1_s">
    <IconStyle>
    <scale>1</scale>
    <Icon>
    <href>stecknadel_blau.png</href>
    </Icon>
    <hotSpot␣x="23"␣y="48"␣xunits="pixels"␣yunits="pixels"/>
    </IconStyle>
    <LabelStyle>
    <color>ff00aaff</color>
    </LabelStyle>
    </Style>
    
    <Placemark>
    <name>Test</name>
    <description><![CDATA[Beschreibung␣hier]]></description>
    <LookAt>
    <longitude>6.8913295</longitude>
    <latitude>50.82572</latitude>
    <altitude>0</altitude>
    <range>0</range>
    <tilt>0</tilt>
    <heading>0</heading>
    </LookAt>
    <styleUrl>#Wo1</styleUrl>
    <Point>
    <coordinates>6.8913295,50.82572</coordinates>
    </Point>
    </Placemark>
    </Document>
    </kml>
    

    oder einfacher

    <?xml␣version="1.0"␣encoding="UTF-8"?>
    <kml␣xmlns="http://earth.google.com/kml/2.1">
    <Document>
    <Placemark␣id="Test">
    <name>Test</name>
    <Point>
    <coordinates>6.6406395,50.94658</coordinates>
    </Point>
    </Placemark>
    </Document>
    </kml>
    

    Ich habe es nicht ans laufen bekommen

    Benötige dringend Hilfe

    Gruß

    Byte


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Julius H (Gast) · 16.08.2009 20:55 · [flux]

      Ich hab grad keine Zeit mir deinen Code anzusehen, hier aber mal ein Link zu einem funktionierenden Beispiel (KML-Layer über OSM inkl. Eventhandler und Popups) - einfach in den Quelltext schauen. (Sollte auch mit Einzelpunkten statt Polygonen funktionieren).
      Vielleicht hilt es ja.
      http://amorphe-welt.de/openstreetmap/unikml.html


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 07.05.2012 23:41 · [flux]

      Hallo,

      das Beispiel funktioniert nicht.

      Hat jemand ein anderes Beispiel, das funktioniert?

      Danke
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · tunnelbauer (Gast) · 08.05.2012 10:21 · [flux]

      Nur mal so als Frage am Rand: Muss es denn wirklich eine kml sein?

      Sowas kann man auchmit einer csv umsetzen in der die Punkte definiert sind (inkl. popup und Symbol)... Dabei lässt sich - aus meiner Sicht - die csv auch wesentlich einfacher aktualisieren.


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 10:59 · [flux]

      Moins,

      cleerclouds wrote:

      Hat jemand ein anderes Beispiel, das funktioniert?

      Ich finde auf die Schnelle zwei Probleme in Deinem Code:

      (1)

      var␣kml␣=␣new␣OpenLayers.Format.KML().read("lines.kml");
      

      Die “OpenLayers.Format.*.read()”-Methoden erwarten keine URL, sondern entweder einen XML-Baum oder einen Text (letzter wird sogleich zu einem XML-Baum geparst).

      Um das Abholen musst Du Dich selbst kümmern.

      Diese Aufteilung “Abholen” und “Parsen” ist sinnvoll, weil während des synchronen Abholens die Karte ja "hängt" und Du auch asynchron abholen kannst.

      Also (in kleinen Happen, die kannst Du natürlich zusammenfassen) mit vernünftigen Variablennamen:

      var␣request␣=␣OpenLayers.Request.GET␣({async:␣false,␣url:␣"kmlpoints.kml"});
      //alert␣("request="␣+␣request);
      var␣data␣=␣request.responseXML␣||␣request.responseText;
      //alert␣("data="␣+␣data);
      var␣features␣=␣new␣OpenLayers.Format.KML().read(data);
      //alert␣("features)"␣+␣features);
      

      (2)

      Nach dieser Änderung zeigt die Karte einen Marker, allerdings vor der Küste von Kamerun. Der Grund dafür ist meistens die Nutzung einer falschen Projektion.

      Geographisch Koordinaten umfassen -180…+180,-85…+85. Das intern verwendete System aber ~-20000000…~20000000, ~-20000000…~20000000. Wenn Du geographische Koordinaten übergibst, das System aber interne Koordinaten erwartet, sind Deine Werte viel zu klein und werden in der Nähe von 0°,0° dargestellt.

      Meines Wissens kann das OpenLayers.Format.KML anders als viele anderen Formate keine Koordinatentransformation: Du musst also bereits auf dem Server konvertieren.

      Ich bin mir da aber nicht sicher und dankbar, wenn mich ein (OL/)KML-Experte korrigiert.

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 11:29 · [flux]

      Moins,

      tunnelbauer wrote:

      Sowas kann man auchmit einer csv umsetzen in der die Punkte definiert sind (inkl. popup und Symbol)...

      Bevor ich Werbung für CSV mache (und dafür wieder verprügelt werde), fixe ich doch lieber das KML-Problem.

      tunnelbauer wrote:

      Dabei lässt sich - aus meiner Sicht - die csv auch wesentlich einfacher aktualisieren.

      .oO (Gedanken sind frei: Wie wahr, wie wahr!)

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 11:47 · [flux]

      Hi Wolf,

      vielleicht kannst du mir helfen.

      Ich habe die gosmore kml (route Datei), nach Aufruf der folgenden URL

      http://www.yournavigation.org/api/1.0/g … yer=mapnik

      auf meinem Server gespeichert.

      Allerdings bekomme ich die kml Datei mit der methode die hier angewandt wird nicht angezeigt.

      Hast du eine Lösung parat?

      Danke im voraus
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 11:50 · [flux]

      Nahmd,

      cleerclouds wrote:

      vielleicht kannst du mir helfen.

      Es wäre schön zu erfahren, ob die bisherigen Tipps geholfen haben.

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 11:50 · [flux]

      Hi,

      nein keins von denen. 🙁

      Zur Info: Ich nutze openlayer 2.11


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · tunnelbauer (Gast) · 08.05.2012 11:52 · [flux]

      Weil ich mal einen Wolf prügeln will:

      Da ist doch kein Pop-Up dabei!!! 😉 (beim gefixeden KML-Problem)

      @cleerclouds:
      Du speicherst die KML wie ab? So wie sie dir in deinem Browser angezeigt wird? Das hat so noch nie geklappt... (Zeichencodierung, usw...)

      PS: Was? Auch das nicht mit der CSV-Datei? Das wundert mich jetzt ein wenig... (mit der habe sogar ich Erfolge binnen kürzester Zeit erzielt)


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 12:02 · [flux]

      Also,

      ich verwende php

      mit diesem sourcecode

      $kml␣=␣file_get_contents(gosmore_url);
      $xml␣=␣simplexml_load_string($kml);
      
      $myFile␣=␣"myfile.kml";
      $fh␣=␣fopen($myFile,␣'w')␣or␣die("can't␣open␣file");
      if($fh==false){
      print␣"unable␣to␣create␣file";
      }
      fwrite($fh,␣$kml);
      fclose($fh);
      

      damit bin ich immer gut gefahren und die Editoren haben auch den gleichen Zeichensatz und Codierung angezeigt.

      Gruß
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 12:28 · [flux]

      Moins,

      cleerclouds wrote:

      nein keins von denen. 🙁

      Also bei mir setzt http://www.netzwolf.info/service/forum/kmlpoints.htm brav einen Punkt nach Bergheim.

      Ich schlage vor, dass Du das mal runterlädtst, die URL anpasst und dann bei Dir laufen lässt. Und bevor Du nicht den Punkt in Bergheim bei Dir auf der Karte siehst, guck ich mir das LineString-Problem noch nicht einmal an.

      Außerdem wäre es schön, die URL zu erfahren, unter der Du das Zeug testest. Manchmal haben Fehler auch mit der Serverumgebung zu tun und verschwinden, wenn man das Problem nachzuvollziehen versucht (Heisenbugs).

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 12:33 · [flux]

      Hi,

      hmm interessant.
      Wärst du so nett und nimmst die url die ich hier gepostet habe und bindest die da mal ein, weil ich jetzt für 2-3 raus muss?

      Das wäre super, so würde ich zeit sparen. Hättest dann auch einen gut bei mir. 🙂

      Danke
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 12:40 · [flux]

      Moins,

      cleerclouds wrote:

      Wärst du so nett und nimmst die url die ich hier gepostet habe und bindest die da mal ein, weil ich jetzt für 2-3 raus muss?

      Du kennst die Same Origin Policy?

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · tunnelbauer (Gast) · 08.05.2012 13:24 · [flux]

      Neben Wolfs Bedenken:

      http://osm.quelltextlich.at/wizard-kml-osmtools.html

      Damit bist du schneller fertig... 😉

      Nachtrag: Entnommen aus: http://wiki.openstreetmap.org/wiki/KML


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 20:45 · [flux]

      Hallo Wolf,

      ich habe nun dein script angepasst und bei mir laufen gelassen, das läuft auch.
      Aber der sourcecode deiner datei sieht ganz anders aus als hier beschreiben.

      Ich werde nun schauen, ob ich dein script dynamisch aufbauen kann.

      Gruß
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · nomatrix (Gast) · 08.05.2012 20:58 · [flux]

      ...


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 21:06 · [flux]

      Nahmd,

      cleerclouds wrote:

      Ich werde nun schauen, ob ich dein script dynamisch aufbauen kann.

      [×] Guter Plan.

      Bei kleinen Schritten kommt man nicht so leicht ins Stolpern.

      Übrigens funktionieren auch die Linienfeatures.

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · maxbe (Gast) · 08.05.2012 21:11 · [flux]

      nomatrix wrote:

      bischen ab vom thema:
      es scheint eine information zu geben die ich noch nicht kenne, bedauere. dieses -85/+85 ... wieso das? nicht -90/+90? wieso?.

      Stell dir einen um die Erdkugel gewickelten Zylinder vor. Und dann im Mittelpunkt der Kugel eine Lampe. Und dann paust Du die Kontinente auf dem Papierzylinder ab (oder sieh dir besser ein Wikipedia-Bild zur Zylinderprojektion an, ich kanns so schlecht erklären...) 😉

      Die Mercatorprojektion sieht in etwa so aus wie da oben erklärt (blos noch ein bisschen gestaucht). Das Licht der Lampe durch den Nordpol trifft den Zylinder nie, weil das fällt oben durch die Zylinderbohrung. Das Licht durch einen Punkt gleich neben dem Pol trifft den Zylinder ziemlich weit oben, fast im Unendlichen.

      Dass polnahe Regionen stark verzerrt sind und die Pole überhaupt nicht drauf sind, ist ein Merkmal der Zylinderprojektion. Irgendwo macht man dann Schluss, weil es zu hässlich wird und das kann man auch bei 85 Grad machen.

      Für gerade 85.xxx Grad spricht, dass dann die Mercatorprojektion zufällig genau ein quadratisches Kartenbild für die ganze Erde ergibt und das passt dann wunderbar ins Kachelschema von Karten im Web.

      Grüße, Max (der bei Bedarf ein Bild nachreicht...)

      Edit: Da gibts Bilder: http://mathworld.wolfram.com/CylindricalProjection.html


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · nomatrix (Gast) · 08.05.2012 21:16 · [flux]

      ...


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 21:26 · [flux]

      Hi WOlf,

      also ich habe folgendes Problem.

      wenn ich auf http://www.yournavigation.org/ nach mexico in die stadt Tijuana
      gehe bekomme ich Routen angezeigt, die ja auf gosmore basieren.

      Allerdings bekomme ich über gosmore

      http://www.yournavigation.org/api/1.0/g … yer=mapnik

      keine route übergeben.

      Weist du vielleicht wieso oder woran das liegt?

      Danke
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 21:58 · [flux]

      Nahmd,

      nomatrix wrote:

      Geographisch Koordinaten umfassen -180…+180,-85…+85.

      es scheint eine information zu geben die ich noch nicht kenne, bedauere. dieses -85/+85 ... wieso das? nicht -90/+90? wieso? wo steht das? das ist wirklich ernst gemeint. ich kenne: eine seite, 90 hoch, 90 runter, zweite seite das gleiche = 4 x 90 = 360. was hat das mit den 85 auf sich? bekommt die projektion das nicht gebogen oder wie oder was? klär mich auf.

      Also: der ganze Ärger der Kartenmalens hängt daran, dass die Erde als mehr oder weniger Kugel eine räumliche Krümmung hat. Egal wo Du stehst, egal in welche Richtung du guckst, es geht (räumlich) abwärts.

      Das gilt nicht beim Zylinder (siehe Papieraufkleber auf Konservenbüchse) oder beim Kegel (Schultüte, kann man aus Papier zusammenrollen). Die haben an jedem Punkt eine Richtung (plus die Gegenrichtung), in der sie nicht gekrümmt sind.

      Weil die Erde also räumlich gekrümmt ist (ein Gaußsches Krümmungsmaß ungleich 0 hat), kann man sie nicht aus einem Blatt Papier herstellen. Damit gibt es auch keine Karte, die die Erdoberfläche (bis auf Verkleinerung) exakt wiedergibt.

      Das ist lästig, aber die Kartografen haben sich davon nicht beirren lassen, und sich diverse listige sogenannte “Projektionen” einfallen lassen. Eine Projektion ist einfach eine Umrechung von einem (Länge, Breite)-Paar auf eine (X,Y)-Koordinate in einem rechtwinkligen Koordinatensystem (wie man es in der Schule lieben oder hassen gelernt hat).

      Eine solche Abbildung kann nun verschiedene Eigenschaften haben:
      → sie kann die Fläche exakt abbilden.
      → sie kann Richtungen exakt abbilden.
      → sie kann Entfernungen exakt abbilden.
      → sie kann Formen exakt abbilden.
      → sie kann Großkreise (=Längengrade+Äquator) als geraden abbilden.
      → sie kann die Breitengrade als Linien abbilden
      → usw. usw.

      Einige der Eigenschaften schließen sich aber aus. Da muss man wählen.

      Die Merkatorabbildung soll nun folgende Eigenschaften haben:
      → Längengrade werden auf Graden abgebildet.
      → Breitengrade werden auf Geraden abgebildet.

      Diese beiden Charakterisierungen reichen aber noch nicht zur Eindeutigkeit. Denn jeder kennt die großen Welt-Wandkarten, die oben und unten eine gleichförmige Skala von -180° bis +180° haben, und an den Seiten eine gleichmäßige Skala von -90° bis +90°. An diesen Typ Projektion hast Du wahrscheinlich gedacht. Die hat aber eine merkwürdige Eigenschaft: Nordpol und Südpol, Punkte, sind zu je einer Linie geworden, genau so lang wie der Äquator. Was ist da passiert?

      Ganz einfach: der Abstand zwischen den Meridianen (Längengradlinien) nimmt zu den Polen hin ab und erreicht an den Polen den Wert 0 (genauer: er geht mit dem Cosinus der Breite: cos(0°)=1 (am Äquator), cos(90°)=0 (am Pol). Die Karte in rektilinearer Projektion aber zieht die einfach soweit auseinander, dass der Abstand konstant bleibt. Je weiter zu den Polen hin, um so mehr zieht sie auseinander.

      Dieses Auseinanderziehen hat aber einen unangenehmen Effekt: Formen werden zerstört. Stell Dir ein Gebäude mit quadratischen Grundriss vor: in der Karte würde das in der Breite auseinandergezogen und würde rechteckig. Aus einem kreisförmigen Brunnen würde ein ellipsenförmiger.

      Die Merkatorprojektion verhindert das mit einem genialen Trick: sie zieht nicht nur in der Breite auseinander, sondern um den gleichen Faktor auch in der Höhe. Dadurch bleiben Formen erhalten. Abbildungen mit dieser Eigenschaft nennt man auch “konforme Abbildungen”, falls Du das mal irgendwo liest. Konform heißt (vereinfacht): Ein Objekt mag verschoben, vergrößert, verkleinert oder sogar gedreht (siehe UTM-Gitter) werden: die Form aber bleibt erhalten (zumindest bei hinreichend kleinen Objekten).

      Die Frage ist jetzt: wie groß wird eine Karte der ganzen Erde in Merkator-Projektion. Ich nehme die Antwort vorweg: unendlich groß. Man kann keine Merkatorkarte erstellen, die bis an die Pole reicht.

      Warum das? Gucken wir uns einen Streifen der Höhe 1m z.B. auf 60° Breite an. Auf 60° Breite haben die Meridiane nur noch die Hälfte des Abstandes, den sie am Äquator hatten. Wir ziehen also den Streifen auf das doppelte auseinander und auch auf das doppelte in die Höhe. Der ist jetzt also 2m hoch.

      Das machen wir mit allen Streifen immer weiter in Richtung Pol. Bei 78.46° ist der Cos noch 0.2, wir müssen unseren Streifen also um das 5-Fache in Länge und Breite dehnen.

      Auf 89.94° ist der Cos noch 0.001, wir dehnen also in Länge und Breite auf das Tausendfache. Und Du ahnst es schon: je näher wir dem Pol kommen, umso extremer wird die Dehnung. Der Streifen bei 89.99994° muss auf das Millionenfache gestreckt werden, aus 1m werden also 1000km in der Höhe: die Merkatorkarte explodiert nach oben und unten.

      Das kann man auch als Formel ausdrücken: wenn ich jeden infinitesimal schmalen Streifen um den Faktor 1/cos(phi) dehne, so ist die Gesamtstrecke das Integral über 1/cos. Die Funktion 1/cos wird auch als Secans bezeichnet, die Stammfunktion kann man selbst herleiten, man kann aber auch - listig listig - bei Wikipedia nachschauen.

      Integral (1/cos(φ)) = log (1/cos(φ) + tan(φ)) = log ( tan (½φ + ¼π))

      merkatorbreite␣=␣log␣(tan␣(½geographischebreite␣+␣¼π))␣␣␣[IM␣BOGENMASS!]
      

      Wo schneiden wir jetzt die Merkatorkarte ab? Da bietet sich die Merkatorbreite -180° und +180° an, denn dann wird die entstehen Karte in Merkatorprojektion quadratisch (tile=0/0/0) 🙂

      180° im Bogenmaß ist gerade π.

      Wir suchen also die geographische Breite zur Merkatorbreite π:

      π = log ( tan (½geographischeBreite + ¼π))
      exp(π) = tan (½geographischeBreite + ¼π)
      arctan(exp(π)) = ½geographischeBreite + ¼π
      arctan(exp(π)) - ¼π = ½geographischebreite
      geographischebreite = 2*arctan(exp(π)) -½π

      Flugs Taschenrechner auf Bogenmass umgeschaltet und ausgerechnet: 1.48442223

      Umgewandelt in Grad (÷ π × 180°): 85.05113°

      Also wenn Dich nochmal jemand fragt, woher die 85.0…° kommen, lautet die Antwort:

      Das ist 2*arctan(exp(π)) -½π umgerechnet in Grad.

      Und der Frager verstummt. 🙂

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 22:06 · [flux]

      Nahmd,

      maxbe wrote:

      Dass polnahe Regionen stark verzerrt sind und die Pole überhaupt nicht drauf sind, ist ein Merkmal der Zylinderprojektion.

      Kleine Korrektur, denn ich muss die Zylinderprojektionen in Schutz nehmen: Merkmal der Zylinderprojektion ist ausschließlich, dass sowohl Längengrade als auch Breitengrade auf gerade Linien abgebildet werden.

      Denn nur die konforme Zylinderprojektion (=Merkatorprojektion) verhält sich ungehörig, sowohl die rektilineare Projektion (die von der Welt-Wandkarte) als auch die flächentreue Zylinderprojektion (Albersprojektion, gruselig verzerrend, aber politisch korrekt) sind brav (und haben auch einfachere Mathematik).

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 22:13 · [flux]

      Nahmd,

      cleerclouds wrote:

      Allerdings bekomme ich über gosmore

      http://www.yournavigation.org/api/1.0/g … yer=mapnik

      keine route übergeben.

      Das ist allein Sache des Bundestrainers von yournavigation.org. Frag die Jungs (und Mädels) dort.

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 08.05.2012 22:18 · [flux]

      Habe es raus das liegt an der konvertierung in php von der Mercator projection nach WGS 1984 falsch ist und falsche coordinaten rausgibt.

      Suche nach gerade nach einer neuen convertierungmethode.

      Oder kennt ihr eine gute, die bei openstreetmap ist nämlich falsch bzw. funktioniert nicht.

      Gruß
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · chris66 (Gast) · 08.05.2012 22:20 · [flux]

      Netzwolf wrote:

      Also wenn Dich nochmal jemand fragt, woher die 85.0…° kommen, ...

      Achso, deshalb hatte ich so große Probleme den Yeti-Zoo am Südpol einzuzeichnen:


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 22:25 · [flux]

      nahmd,

      chris66 wrote:

      Achso, deshalb hatte ich so große Probleme den Yeti-Zoo am Südpol einzuzeichnen:
      http://up.picr.de/10425683xj.png

      🙂 🙂 🙂

      Die Fehlerbox ist fast so gut wie:

      Wenn der Computer ausgeschaltet ist, können Sie ihn auch nicht benutzen.

      [Seh ich ein]

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 08.05.2012 23:27 · [flux]

      Nahmd,

      cleerclouds wrote:

      Habe es raus das liegt an der konvertierung in php von der Mercator projection nach WGS 1984 falsch ist und falsche coordinaten rausgibt.

      Suche nach gerade nach einer neuen convertierungmethode.

      Oder kennt ihr eine gute, die bei openstreetmap ist nämlich falsch bzw. funktioniert nicht.

      Der Funktion “lon2x()” aus dem Wiki war defekt. Ich habe sie repariert und die schließende Klammer an die richtige Stelle geschoben. Die übrigen Funktionen waren korrekt.

      function␣lon2x␣($lon)␣{
      return␣deg2rad($lon)␣*␣6378137;
      }
      
      function␣lat2y($lat)␣{
      return␣log(tan(M_PI/4␣+␣deg2rad($lat)/2))␣*␣6378137;
      }
      
      function␣x2lon($x)␣{
      return␣rad2deg($x␣/␣6378137);
      }
      
      function␣y2lat($y)␣{
      return␣rad2deg␣(2␣*␣atan(exp($y/6378137))␣-␣M_PI/2);
      }
      
      echo␣"lon2x(-180):␣",␣lon2x(-180),␣"\n";
      echo␣"lon2x(+180):␣",␣lon2x(+180),␣"\n";
      
      echo␣"x2lon(-20037508.34):␣",␣x2lon(-20037508.34),␣"\n";
      echo␣"x2lon(+20037508.34):␣",␣x2lon(+20037508.34),␣"\n";
      
      echo␣"lat2y(-85.0511288):␣",␣lat2y(-85.0511288),␣"\n";
      echo␣"lat2y(+85.0511288):␣",␣lat2y(+85.0511288),␣"\n";
      
      echo␣"y2lat(-20037508.34):␣",␣y2lat(-20037508.34),␣"\n";
      echo␣"y2lat(+20037508.34):␣",␣y2lat(+20037508.34),␣"\n";
      

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · nomatrix (Gast) · 09.05.2012 00:45 · [flux]

      ...


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 09.05.2012 02:00 · [flux]

      Hi Wolf,

      danke dir, habe das nun zum laufen bekommen.:)

      Nun möchte ich noch die Farbe und die Dicke der Linie ändern.
      Finde hier im Forum nichts.
      Hast du da auch was parat?

      Gruss
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 09.05.2012 07:37 · [flux]

      0Moins,

      cleerclouds wrote:

      Nun möchte ich noch die Farbe und die Dicke der Linie ändern.
      Finde hier im Forum nichts.

      Die Dokumentation zu OpenLayers ist Dein Freund.

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · cleerclouds (Gast) · 09.05.2012 22:02 · [flux]

      Hi Wolf,

      ich habe nun das style eingebunden, es wird aber nicht angezeigt.

      hier der Code

      var␣lineLayer␣=␣new␣OpenLayers.Layer.Vector('Line␣Layer',␣{styleMap:␣new␣OpenLayers.StyleMap({strokeColor:␣"#3399FF",␣strokeOpacity:␣1,␣strokeWidth:␣6})});
      var␣request␣=␣OpenLayers.Request.GET␣({async:␣false,␣url:␣"mykmlfile.kml"});
      var␣data␣=␣request.responseXML␣||␣request.responseText;
      var␣features␣=␣new␣OpenLayers.Format.KML().read(data);
      lineLayer.addFeatures(features);
      map.addLayer(lineLayer);
      

      Weist du vielleicht wo der Hase im Pfeffer liegt?

      Gruß
      Andy


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 09.05.2012 22:11 · [flux]

      Nahmd,

      cleerclouds wrote:

      ich habe nun das style eingebunden, es wird aber nicht angezeigt.

      styleMap:␣new␣OpenLayers.StyleMap({strokeColor:␣"#3399FF",␣strokeOpacity:␣1,␣strokeWidth:␣6})});
      

      Diesen Code hast Du aber nicht aus der OL-Doku?

      StyleMap will als Argument keine Liste von Attributen haben, sondern ein Objekt mit Zuordnung von Objektzuständen zu Styles:

      […]
      styleMap:␣new␣OpenLayers.StyleMap({
      'default':␣new␣OpenLayers.Style␣({
      strokeColor:␣"#3399FF",
      strokeOpacity:␣1,
      strokeWidth:␣6
      })
      }),
      […]
      

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · nomatrix (Gast) · 14.05.2012 12:34 · [flux]

      ...


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · Netzwolf (Gast) · 14.05.2012 12:52 · [flux]

      Nahmd,

      nomatrix wrote:

      die erde ist doch eine scheibe (100x100)

      Wie wahr, wie wahr!

      Gruß Wolf


    • Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt · EvanE (Gast) · 14.05.2012 13:28 · [flux]

      nomatrix wrote:

      jetzt bin ich zufällig auf eine app mit namen vespucci gestossen und lese dort: lat muss zwischen -85 und +85, lon zwischen -175 und +175 liegen. ich frage am besten gar nicht erst und gehe davon aus: die erde ist doch eine scheibe (100x100)

      Das liegt an der der Merkartor-Projektion.
      Die ist eine Zylynderprojektion und soll winkeltreu sein. Daher werden mit zunehmender Entfernung vom Äqautor die Länge gedehnt. 90° gehen damit nicht mehr, da dort die Längen in der Projektion unendlich wären. Bei Begrenzung auf ziemlich genau 85° Nord resp. Süd kriegt man für die ganze Erde ein Quadrat als Ergebnis. Einfach mal die OSM Karte auf Z0 bis Z2 zoomen, dann sieht man das.

      Ein anderes Problem ist, dass -180° (West) identisch mit +180° (Ost) ist. Es erfordert eine ganze Menge zusätzliche Codierung, um diesen Fall sauber zu behandeln. Da haben es sich die Programmierer von Vespucci mit ihrer Beschränkung auf -175° und +175° wohl etwas einfach gemacht.

      Edit: Typo

      Edbert (EvanE)