Autor |
Nachricht |
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Do 24.10.2013 13:12
Titel OSM/Javascript: Marker auf verschiedenen Layern anklicken? |
|
|
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. ...
Irgendwie ist das ja auch logisch, ist aber trotzdem Mist. Gibts irgend einen Trick, die Klicks "durchzureichen"?
|
|
|
|
|
ChrisKam
Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht:
|
Verfasst Do 24.10.2013 13:25
Titel
|
|
|
Ö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.
|
|
|
|
|
Anzeige
|
|
|
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Do 24.10.2013 13:32
Titel
|
|
|
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 ...
|
|
|
|
|
ChrisKam
Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht:
|
Verfasst Do 24.10.2013 13:39
Titel
|
|
|
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.
|
|
|
|
|
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Do 24.10.2013 13:50
Titel
|
|
|
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.
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
|
|
|
|
|
ChrisKam
Dabei seit: 01.07.2009
Ort: Hattingen
Alter: 38
Geschlecht:
|
Verfasst Do 24.10.2013 14:44
Titel
|
|
|
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
|
|
|
|
|
Morgo
Dabei seit: 10.08.2005
Ort: Von Kowelenz bis Kölle
Alter: 39
Geschlecht:
|
Verfasst Do 24.10.2013 14:46
Titel
|
|
|
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 ..
|
|
|
|
|
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Do 24.10.2013 14:56
Titel
|
|
|
Klappt auch! Danke.
Mache OSM erst seit ca. 1 Monat und auch nicht jeden Tag ...
|
|
|
|
|
|
|
|
Ähnliche Themen |
JavaScript toggle mit zwei verschiedenen Klassen
Coverflow zum anklicken
Menü zum anklicken
[Flash] in Layern
Probleme mit Layern
Drucken von Layern
|
|