OpenStreetMap/PHP Spezi gesucht

Hallo,
auf meiner privaten Website ist eine Leaflet Maps eingebunden. Siehe hier:

https://www.pskreporter.de/activity/map

Beim Code hat mit vor längerer Zeit ein Bekannter geholfen. Leider ist dieser nicht mehr erreichbar und der Code müsste verändert werden. Die Marker werden als PNG- Icons dargestellt. Da die Anzahl der Marker inzwischen auf zeitweise über 6000 gestiegen ist, dauert das Laden sehr lange. Die Anzahl der Marker ist abhängig von der Tageszeit. Bis 4000 geht es noch mit der Darstellung, darüber wird es schwierig. Auch kann man dann kaum noch zoomen oder die Map verschieben. Ich selbst bin hier überfordert. Wer kann helfen?

LG, Torsten

Die Problematik ist mir vertraut - allerdings war ich schon bei 300 Markern gezwungen nicht mehr einfach alle darzustellen. :slight_smile:

Welche Art von Änderung willst Du denn erreichen? Normalerweise wird die Darstellung auf Marker im aktuellen Kartenausschnitt begrenzt.

Aus welcher Datenquelle kommen die Marker?

Deine Seite steigt mit einer Weltkarte ein - da würden immer alle Marker angezeigt. Wie willst Du damit umgehen?

Die Seite ist für Funkamateure gedacht und daher international ausgerichtet, die komplette Anzeige der Weltkarte macht daher Sinn. Es gibt im Amateurfunk verschiedene Bänder (Frequenzbereiche) auf denen gefunkt werden darf, z.B. das 80m Band. Es wird aus einer vorhandenen XML-Datei ausgelesen, wie viele Empfangsstationen auf den jeweiligen Bändern aktiv sind und auch ihre jeweilige Position. Das wird mit PHP gemacht. Nun werden die jeweiligen Marker geladen, z.B. 80m.png, 40m.png usw. Das heißt, es werden immer so zwischen 4000-7000 PNG-Dateien geladen. Ich habe schon versucht die Marker nach gif zu konvertieren bzw. sie zu komprimieren um die Gesamtgröße an KB zu verringern, aber das hat kaum was gebracht. Vor einigen Jahren lag die Anzahl der Marker so um die 2000-3000, da lief es noch gut. Man müsste von den PNG- Dateien weg kommen oder Clustering einsetzen und den Code entsprechend anpassen. Aber das kann ich nicht, damit bin ich überfordert. :frowning:

LG, Torsten

Wenn es nur um die Anzeige geht, dann gibt es das Plugin leaflet-markercluster, das wirklich einfach genutzt werden kann.

https://github.com/Leaflet/Leaflet.markercluster

Hey,
wo genau liegt denn das Problem?

Ich hätte 2 Otionen
a) Laden der Seite, aber das ging - bei mir jedenfalls - relativ flott. Ggf. wäre hier ein Cache sonst sinnvoll, wenn man rausfindet wo genau das Problem wäre.
b) Arbeiten an der Karte - hier würde ich dir auch Leaflet.markercluster empfehlen.

Falls du allgemein Hilfe brauchst, bringe ich etwas Erfahrung in php, javascript mit.

Die Anzeige im Browser kann man durch Gruppieren nahe beieinanderliegender Marker beschleunigen und aufräumen.

Siehe Leaflet Clustering/Decluttering Plugins, z.B. Leaflet.markercluster.

Als ich Deine Seite besucht habe, war sie auch erstaunlich schnell und ich habe mich gewundert was Du meinst.

Aber in dem was Du beschreibst sehe ich mehrere Probleme:

  • laut Legende gibt es nur 20 unterschiedliche Marker. Falls aber wie beschrieben jeder Marker einzeln aufgrund des Namens in der Datei geladen wird, ist das extrem suboptimal. Es sollten die 20 Grafiken einmal im Voraus geladen und dann immer wiederverwendet werden.
  • So viele Punkte aus einer XML-Datei zu laden ist langsam. Nach meiner Erfahrung kann man je nach Art der Daten bis zu 1000 Datensätze bequem immer wieder aus einer Textdatei laden und XML ist ein sehr schlechtes Format was Performance angeht. Bei mehr Daten sollten sie in einer PostGIS-Datenbank abgelegt werden. Von dort kann man sie grundsätzlich schneller lesen und bequem immer nur die Daten auswählen, die in einem bestimmten Kartenausschnitt gebraucht werden.

Mit dem PNG Format hat die Problematik nichts zu tun, nur damit daß sie viel zu oft redundant geladen werden. Clustering ist nur eine Sache einer übersichtlicheren Anzeige, das ist hübsch aber die Probleme liegen woanders.

Vielen Dank für die schnellen Antworten. Ja, das Laden der Karte geht noch halbwegs. Aber ich kann sie nicht vernünftig zoomen oder verschieben. Das passiert nur mit extremer Verzögerung. Klicke ich auf einige Marker in der Legende und halbiere so die Hälfte der angezeigten Marler auf der Map, geht es flüssiger. Wie ich oben schon schrieb, bis 4000 Marker ist es noch ok, bei 7000 ist es schon ziemlich bescheiden und nicht mehr zumutbar.

Ich werde mal folgendes probieren. Ich ersetze testweise die jetzigen Marker mit sehr kleinen Grafiken, nur wenige Bytes groß. Dann weiß ich zu mindestens ob das Problem die jetzigen Marker sind, oder auch das Einlesen der jeweiligen Positionen aus der XML- Datei. Bislang hatte ich nur die Grafiken in Verdacht, aber aufgrund eurer Kommentare bin ich da jetzt nicht mehr so sicher. Vermutlich schaffe ich das aber erst am Freitag oder Samstag, da ich beruflich unterwegs bin.

LG, Torsten

Eventuell hilft Dir die Entwicklerkonsole Deines Browsers (F12 beim FireFox) dabei, den Flaschenhals zu finden.

Ich habe nun für einen kurzen Test die jetzigen Marker- Icons durch kleine Punkte ersetzt. Der Geschwindigkeitsgewinn war nur gering, bringt also nichts. Das Problem scheinen also nicht unbedingt die Marker als Bilddateien zu sein. Es liegt wohl daran, dass die jeweiligen Positionen eingelesen werden müssen. Das Verschieben der Map funktioniert noch halbwegs, aber das Zoomen ist wirklich kritisch. Als beste Lösung scheint das Clustering in Frage zu kommen. Ich hoffe es findet sich jemand der mir bei der Umsetzung helfen könnte.

LG, Torsten

Hey Torsten,
ich habe dir mal eine Mail geschrieben. Du darfst dich, wie oben erwähnt, gerne melden.

Ich habe keine Nachricht erhalten und meine Nachricht an dich scheint auch nicht angekommen zu sein. Möglich das meine Eingaben im persönlichen Profil nicht ausreichend ausgefüllt waren, dies habe ich nun vervollständigt. Wäre nett wenn du mir die PM noch einmal senden könntest, ich hoffe das es jetzt klappt. Ansonsten findest du meine E-Mail Adresse auf der o. g. Homepage.

LG, Torsten

Schade, keine Antwort auf meine Nachricht. :frowning:

LG, Torsten