mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 27.04.2024 12:10 Benutzername: Passwort: Auto-Login

Thema: OSM/Javascript: Marker auf verschiedenen Layern anklicken? vom 24.10.2013


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> OSM/Javascript: Marker auf verschiedenen Layern anklicken?
Seite: 1, 2  Weiter
Autor Nachricht
qualidat
Threadersteller

Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht: Männlich
Verfasst Do 24.10.2013 13:12
Titel

OSM/Javascript: Marker auf verschiedenen Layern anklicken?

Antworten mit Zitat Zum Seitenanfang

In einem Projekt für Denkmale sollen deren Standorte in einer OSM-Karte angezeigt werden. Die Denkmale gehören zu verschiedenen Kategorien - die zugehörigen Marker liegen deshalb - entsprechend der Kategorie - auf eigenen Layern.

Nächster Kundenwunsch (da die Denkmaldichte an manchen Orten sehr hoch ist), dass man die Layer in der Legende der Karte getrennt ein- und ausschalten kann. Zusätzlich sind die Marker klickbar, so dass bei Klick normalerweise ein Popup aufgeht ...

Jetzt kommt das Problem: Klickbar sind jeweils nur noch die Marker des jeweils obersten sichtbaren Layers. Sind also z.B. Layer 1 und 2 eingeschaltet, reagieren nur die Marker von Layer 2 auf Klick. Ist 2 und 4 eingeschaltet, nur die Marker von Layer 4 usw. ... Menno!

Irgendwie ist das ja auch logisch, ist aber trotzdem Mist. Gibts irgend einen Trick, die Klicks "durchzureichen"?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
ChrisKam

Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht: Männlich
Verfasst Do 24.10.2013 13:25
Titel

Antworten mit Zitat Zum Seitenanfang

Öhh also ich denke das solltest Du nicht über "Layer" lösen. Heißt Layer = Durchgehende Grafik?

Ich habe hier mal etwas ähnliches gebaut, vielleicht hilft Dir das weiter: http://www.sport-in-kamp-lintfort.de/vereine/sportstatten-in-kamp-lintfort.html

Soweit ich weiß hatte das irgendwas mit der Google Maps API und einer "KML Sidebar" zu tun. Leider hatte ich zu der Zeit, als ich das gebaut habe, noch nicht allzu Peil von Javasript und habe das hauptsächlich aus fertigen Versatzstücken zusammengebastelt.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
qualidat
Threadersteller

Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht: Männlich
Verfasst Do 24.10.2013 13:32
Titel

Antworten mit Zitat Zum Seitenanfang

Danke für die Antwort, aber es geht um Open Streetmap, nich tum Google Maps. Die ähnels sich zwar in mancher Hinsicht, im Detail sind jedoch sehr verschieden.
"Layer" ist tatsächlich wie eine Ebene oder Folie bzw. programmtechnisch wie eine Gruppe aus Grafiken (die Marker) zu verstehen ...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
ChrisKam

Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht: Männlich
Verfasst Do 24.10.2013 13:39
Titel

Antworten mit Zitat Zum Seitenanfang

Die wichtige Frage für mich bei den Layern war, ob sie durchgehend sind oder nur einzelne Grafiken/Icons/etc. - ein Testlink wäre sehr hilfreich.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
qualidat
Threadersteller

Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht: Männlich
Verfasst Do 24.10.2013 13:50
Titel

Antworten mit Zitat Zum Seitenanfang

ChrisKam hat geschrieben:
Die wichtige Frage für mich bei den Layern war, ob sie durchgehend sind oder nur einzelne Grafiken/Icons/etc. - ein Testlink wäre sehr hilfreich.


Hmmm. Wann ist ein Layer "durchgehend"? In meinem Fall befinden sich nur einzelne Icons drauf ...

Aber ich habe da inzwischen etwas recherchiert, was wenig Hoffnung macht. Da ist die Rede von einem Bug, der dafür sorgt, dass bei Vektor-Layern (obwohl die Icons PNGs sind) Klicks, die ins Leere gehen, nicht zum nächsten Layer durchgereicht werden. *hu hu huu*

Hier ist ein Link (ist ein unfertiger Test!!!): http://qualidat.com/maps/maptest.htm


Zuletzt bearbeitet von qualidat am Do 24.10.2013 14:01, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
ChrisKam

Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht: Männlich
Verfasst Do 24.10.2013 14:44
Titel

Antworten mit Zitat Zum Seitenanfang

Danke für den Link - ich habe gerade leider nicht die Zeit mir das genauer anzuschauen aber versuche mal, den <svg> und allen Elementen, die nicht direkt anklickbar sein zu können mittels CSS pointer-events: none mitzugeben (siehe http://stackoverflow.com/questions/3680429/click-through-a-div-to-underlying-elements) und den <image> Dinger dann pointer-events: auto. Händisch funktioniert das schonmal!

Zuletzt bearbeitet von ChrisKam am Do 24.10.2013 14:44, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Morgo

Dabei seit: 10.08.2005
Ort: Von Kowelenz bis Kölle
Alter: 39
Geschlecht: Männlich
Verfasst Do 24.10.2013 14:46
Titel

Antworten mit Zitat Zum Seitenanfang

Bin kein OSM-Experte, aber man kann bei der Instanzierung von OpenLayers.Control.SelectFeature auch einen Array mit den Ebenen übergeben, anstatt für jedes Layer eine eigene Instanz zu erstellen.

Also statt :

Code:

var controls1 = {selector: new OpenLayers.Control.SelectFeature(mylayer1, { onSelect: createPopup, onUnselect: destroyPopup })};
   map.addControl(controls1['selector']);
    controls1['selector'].activate();
   
   var controls2 = {selector: new OpenLayers.Control.SelectFeature(mylayer2, { onSelect: createPopup, onUnselect: destroyPopup })};
   map.addControl(controls2['selector']);
    controls2['selector'].activate();
   
   var controls3 = {selector: new OpenLayers.Control.SelectFeature(mylayer3, { onSelect: createPopup, onUnselect: destroyPopup })};
   map.addControl(controls3['selector']);
    controls3['selector'].activate();
   
   var controls4 = {selector: new OpenLayers.Control.SelectFeature(mylayer4, { onSelect: createPopup, onUnselect: destroyPopup })};
   map.addControl(controls4['selector']);
    controls4['selector'].activate();



einfach nur

Code:

var controls =  new OpenLayers.Control.SelectFeature([mylayer1,mylayer2,mylayer3,mylayer4], { onSelect: createPopup, onUnselect: destroyPopup });

map.addControl(controls);
controls.activate();



Müsste klappen ..
  View user's profile Private Nachricht senden
qualidat
Threadersteller

Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht: Männlich
Verfasst Do 24.10.2013 14:56
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Müsste klappen ..
Klappt auch! Danke. * Applaus, Applaus *
Mache OSM erst seit ca. 1 Monat und auch nicht jeden Tag ...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen JavaScript toggle mit zwei verschiedenen Klassen
Coverflow zum anklicken
Menü zum anklicken
[Flash] in Layern
Probleme mit Layern
Drucken von Layern
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.