ich möchte mir eine leaflet Karte erstellen auf der ich auf verschiedenen Ebene Marker anzeigen lassen kann.
Ich bin bisher soweit, dass ich mehrere Marker auf der Karte gesetzt habe, allerdings manuell im Script.
Mithilfe dieses Scriptes: https://github.com/mapbox/leaflet-omnivore möchte ich nun verschiedene KML Dateien einlesen und jede Datei soll eine eigene Ebene darstellen, die ich ein- und ausblenden kann.
Die .kml liegt in einem Ordner “kml” der sich in dem Ordner befindet in dem diese Karte.html sich befindet. Es geschieht aber nichts.
Was mache ich falsch?
Der Pfad /kml/Dateiname.kml funktioniert mit ziemlicher Sicherheit nicht – außer du hast direkt im Root ein Directory namens kml angelegt (mit passenden Rechten).
Probiers mal mit ./kml/Dateiname.kml. Oder kml/Dateiname.kml.
Keine von dir beschriebene Variante brachte einen Erfolg.
Ist das Plugin denn richtig eingebunden? Und ist der Code zum Einbinden der KML auch korrekt?
Deine Punktkoordinaten X,Y erzeugen einen Fehler, da sie nicht definiert sind.
Wenn ich Koordinaten einsetze funktioniert es
Mein kml-Datensatz steht im Unterverzeichnis /kml/ der html-Seite
Funktioniert bei mir auch nicht. Habe 1:1 deinen Code genommen und meine KML Datei in einem Unterverzeichnis /kml/ der HTML Seite geschoben.
Allerdings befindet sich in meiner KML Datei keine Pfade sondern nur Punkte (Marker). Ich versuche es mal mit einer CSV Datei, muss der Code dann viel anders lauten oder kann ich einfach die Zeilen
// var runLayer = omnivore.kml('/kml/Dateiname.kml')
// var runLayer = omnivore.kml('./kml/2012-02-10.kml')// funktioniert
var runLayer = omnivore.kml('kml/2012-02-10.kml')// funktioniert
durch
// var runLayer = omnivore.csv('/csv/Dateiname.csv')
// var runLayer = omnivore.csv('./csv/2012-02-10.csv')// funktioniert
var runLayer = omnivore.csv('csv/2012-02-10.csv')// funktioniert
Ich kenne das omnivore Plugin zwar nicht, aber ich kann min nicht vorstellen, dass omnivore.kml csv Dateien entgegen nimmt. Ließ dir doch dazu mal die Dokumentation zum Plugin durch
Bzw. Hast du vorher nachgeschaut, ob es die csv Methode überhaupt gibt?
Ansonsten ist es auch sehr hilfeich, wenn du in deinem Btowser mit F12 mal den Debugger startest und uns die Ausgaben vom console-Log und der Netzwerkansicht gibst. Bei letzterem könnte es ja sein, dass z.B. ein 404 vorliegt, weil er doch an der falschen Stelle sucht.
Unter chrome kann sie aber auch dann kommen, wenn die irgendwas.html Datei auch via file:// geöffnet wird.
@firechhe: magst du uns auch mal dein Systemsetup (Windows, Linux, Webserver, etc.) verraten? Liege ich mit meiner Vermutung richtig, dass du z.B. die html(-Datei) per Doppelklick öffnest?
Ja … die Zeiten, als man HTML Dateien direkt vom Explorer geöffnet und dann auch noch Dat(ei)en (und dann auch noch per file://) nachgeladen hat sind definitiv schon länger vorbei. Schonmal was von XAMPP gehört?
Das läuft nicht. Das läuft auch in ganz vielen anderen Fällen nicht (PHP oder so was). Zur Web-Entwicklung brauchst du zwingend einen lokalen Webserver, damit eine HTTP-Umgebung vorliegt.
Lokaler Webserver ist kein Hexenwerk, es muss gar kein Apache sein (obwohl das 2fellos der beste ist), ich hatte zu Zeiten meiner HTML-Entwicklung einen Janaserver laufen. Ist schnell installiert, Konfig lässt sich durchklicken, in zehn Minuten haste das Ding am Start.
Okay, alles klar danke für den Tipp.
Hab das gesamte Verzeichnis nun mal testweise auf einen “richtigen” Webserver hochgeladen. Und siehe da, es funktioniert!
Eine .csv Datei konnte ich gerade einlesen. KML funktioniert noch nicht - schade. Ich generiere mir über Excel .kml Dateien die ich anschließend in der App maps.me einlese. Wäre natürlich schön, wenn ich die gleiche .kml auch in leaflet einlesen könnte.
Hat da jemand schon mit gearbeitet? Oder kann mir beim CSV Import weiterhelfen? Momentane erstellt mir leaflet nur die Marker. Ich würde aber gern noch per Mausklick Informationen hinterlegen (im besten Fall eine Tabelle).
Zudem würde ich gerne die einzelnen importieren DSV oder KML Dateien über solch einen Ebenenbutton ein- und ausblenden können.