x

Re: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt


Geschrieben von Netzwolf (Gast) am 08. Mai 2012 10:59:24: [flux]

Als Antwort auf: OpenLayer.Layer.Vector KML Datei wird nicht angezeigt geschrieben von Bytechanger (Gast) am 28. Juli 2009 13:18:

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