Script zum Ausblenden von Verbandsgebäuden auf der Karte

  • Da wir uns im Verband auch gerade damit beschäftigen dass es schön wäre wenn
    die Verbandsgebäude auf der Karte ausgeblendet werden möchte ich diesen
    Beitrag hier nochmals gerne zum leben erwecken.


    Wir planen einen Flächendeckenden bau von Krankenhäuser über unser gesamtes
    Berliner Stadtgebiet. Dadurch würde es allerdings zu massiven Problemen bei der
    Lesbarkeit der Karte kommen.


    Im Moment sind wir dabei zu versuchen über ein Script diese Gebäude auszublenden.
    Bisher leider ohne Erfolg. Deshalb mache ich hier jetzt einmal 3 Vorschläge wie das
    ganze gehandhabt werden könnte.


    1. Verbandsgebäude genauso wie die Gebäude von Verbandsmitglieder ausschaltbar machen.


    2. Die Möglichkeit Verbandsgebäuden ein Icon zuordnen zu können.
    (Damit man ein unsichtbares Icon setzen kann und es damit nicht mehr sichtbar ist)


    3. Jedem Verbandsgebäude eine Class geben (muss ja noch nicht mal etwas drin stehen)
    mit welcher man dann über ein Script diese ausblenden kann.


    Hoffentlich konnte ich helfen und irgend eine Möglichkeit wird bald eingeführt werden.


    Gruß Fendo

  • Im Moment sind wir dabei zu versuchen über ein Script diese Gebäude auszublenden.
    Bisher leider ohne Erfolg.

    Sollte möglich sein, Verbandsgebäude haben eine user_id von null, folgendes Script:

    JavaScript
    1. $.each(building_markers_cache, function(i,e){
    2. if(e.user_id==null){
    3. e.icon = "";
    4. e.building_marker_image = "";
    5. }
    6. }
    7. );


    Entfernt die zugehörigen Grafiken und damit sind die Gebäude nicht mehr sichtbar, sofern sie nicht im aktuellen Kartenausschnitt zu sehen waren wenn das Script läuft.
    Müsste man natürlich noch ausarbeiten, die Grafikpfade speichern so dass man die Gebäude via Button einblenden kann, und die im aktuellen Kartenausschnitt auch noch aus/einblenden (via: building_markers)

  • Dass die Verbandsgebäude im jeweiligen Kartenausschnitt welcher beim laden der Seite geladen wird nicht mehr sichtbar sind haben wir auch schon geschafft.


    Aber es geht ja eben genau darum dass man auch beim heraus zoomen oder verschieben der Karte die Gebäude nicht mehr sieht. Auch ohne dass man das Script ständig neu laden muss.

  • Dass die Verbandsgebäude im jeweiligen Kartenausschnitt welcher beim laden der Seite geladen wird nicht mehr sichtbar sind haben wir auch schon geschafft.


    Aber es geht ja eben genau darum dass man auch beim heraus zoomen oder verschieben der Karte die Gebäude nicht mehr sieht. Auch ohne dass man das Script ständig neu laden muss.

    Das sollte mein Script vom vorherigen Beitrag bewirken. Jedenfalls funkioniert es bei mir. Kombiniert mit dem was ihr schon habt wäre dann alles abgedeckt ;-)

  • Das sollte mein Script vom vorherigen Beitrag bewirken. Jedenfalls funkioniert es bei mir. Kombiniert mit dem was ihr schon habt wäre dann alles abgedeckt ;-)

    Du hast vollkommen recht. Habe mich bei deinem Beitrag wohl verlesen :D Sry
    Das Script funktioniert perfekt. Vielen dank dafür schon mal.


    Wenn es möglich wäre, könntest du mir vllt. noch eine kleine Erläuterung zu dem Script schreiben?
    Bin leider nicht wirklich der totale Pro was JS angeht.


    Was für mich am wichtigsten wäre: Wo hast du den "building_markers_cache" und die Parameter "i,e" her?
    Gehören die zur API von LS?

  • @Eschermc und @FendoRichter:
    ich habe eure Beiträge mal vom Vorschlag Anzeige von Verbandsgebäuden abschaltbar machen ins Scripte-Forum verschoben.
    Hier könnt ihr euch ungestört über das Script und die Funktion unterhalten - auch wenn es dabei genau um den Wunsch im Vorschlagsforum geht.
    Es gibt allerdings auch Leute für die ein Script keine endgültige Lösung ist und ich würde den Vorschlag deshalb weiter offen halten.

  • Zum Ausführen des Codes nach dem Zoomen könntet ihr vielleicht dieses Event benutzen:


    map.on('zoomend', function() {
    // Hier Code
    });

    Code
    1. map.on('zoomend', function() {
    2. // Hier Code
    3. });
  • Sollte möglich sein, Verbandsgebäude haben eine user_id von null, folgendes Script:

    JavaScript
    1. $.each(building_markers_cache, function(i,e){
    2. if(e.user_id==null){
    3. e.icon = "";
    4. e.building_marker_image = "";
    5. }
    6. }
    7. );

    Entfernt die zugehörigen Grafiken und damit sind die Gebäude nicht mehr sichtbar, sofern sie nicht im aktuellen Kartenausschnitt zu sehen waren wenn das Script läuft.
    Müsste man natürlich noch ausarbeiten, die Grafikpfade speichern so dass man die Gebäude via Button einblenden kann, und die im aktuellen Kartenausschnitt auch noch aus/einblenden (via: building_markers)

    Habe jetzt mal versucht das "building_markers_cache" durch "building_markers" zu ersetzen. Allerdings passiert dann gar nichts. Die Gebäude die sich beim öffnen der Karte im Fenster befinden werden trotzdem angezeigt.
    Könntest du oder jemand anderes da nochmal helfen?

  • Probier mal so:

    Einmal editiert, zuletzt von jalibu ()

  • Vielen dank @jalibu. Das war der benötigte Anstoß den ich gebraucht habe um das Script fertigzustellen.
    Habe dein Script noch etwas für meine Verwendung angepasst. Zusammen mit dem Teil von @Eschermc läuft es jetzt wie gewünscht.
    Werde jetzt mal ausführlich testen.

  • Könntest du das Script eventuell hier veröffentlichen? Ich würde mich sehr freuen, wenn ich die Verbands-Gebäude nicht immer angezeigt bekomme.

    Probier mal so:

    Das müsste eigentlich das Skript sein, wenn mich meine rudimentären Programmierkenntnisse nicht täuschen :whistling: .
    Dieses kannst du jetzt als Userscript in Grease/tapermonkey einfügen, als Website alle (* oder leer lassen) oder leitstellenspiel.de/* angeben.

  • Wenn es möglich wäre, könntest du mir vllt. noch eine kleine Erläuterung zu dem Script schreiben?
    Bin leider nicht wirklich der totale Pro was JS angeht.


    Was für mich am wichtigsten wäre: Wo hast du den "building_markers_cache" und die Parameter "i,e" her?
    Gehören die zur API von LS?

    Sorry war 'ne zeitlang weg, aber besser spät als nie, evtl. hilft es ja noch was:

    JavaScript
    1. $.each(building_markers_cache, function(i,e){
    2. if(e.user_id==null){
    3. e.icon = "";
    4. e.building_marker_image = "";
    5. }
    6. }
    7. );

    building_markers_cache ist ein Array, das zu LSS gehört und alle Gebäudemarker enthält, auch die nicht Sichtbaren. Mit der jQuery Funktion each iteriert das Script über alle Array-Elemente, die Parameter i & e stehen für den Array-Index (nicht verwendet) und das Element an sich (e).


    In der Javascriptkonsole des Browsers kann man sich anschauen, was dort noch so alles enthalten ist:

  • Hey,
    das scheint tatsächlich so was zu sein was ich suche - VB Gebäude ausblenden.

    Nur mit Euren Fachchinesisch komm ich nicht klar.
    Gibt es da eine Möglichkeit ohne ein IT Studium mir das irgendwo runter zu laden drauklicken und fertig... 8)8)8)
    Per Hand irgendwie rum Programieren, dazu bin ich schon zu halt - zu hoch für mich X/X/X/