KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm working on a OpenLayers map that will display multiple KML layers at once. I want to be able to click on a feature from any layer and have a pop-up show me some info. So far I can only click on the most recently added layer. If I want to click on a previously added layer I have to turn off all the layers that were added before. Obviously this is less than ideal. Here's my code so far: var select = []; function addLayer(layerId, layerLink, layerColor) { var kmlLayer = new OpenLayers.Layer.Vector("Layer_"+layerId, { strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({ url: layerLink, format: new OpenLayers.Format.KML({ extractStyles: true, extractAttributes: true, maxDepth: 2 }) }) }); kmlLayer.events.on({ "featureselected": onKMLSelect, "featureunselected": onKMLUnselect }); select["Layer_"+layerId] = new OpenLayers.Control.SelectFeature(kmlLayer); map.addControl(select["Layer_"+layerId]); select["Layer_"+layerId].activate(); map.addLayer(kmlLayer); } function onKMLPopupClose(evt) { for(s in select) { select[s].unselectAll(); } } function onKMLSelect(event) { var feature = event.feature; var content = "<h2>"+feature.attributes.name + "</h2>" + feature.attributes.description; popup = new OpenLayers.Popup.FramedCloud("chicken", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(100,100), content, null, true, onKMLPopupClose); feature.popup = popup; map.addPopup(popup); } function onKMLUnselect(event) { var feature = event.feature; if(feature.popup) { map.removePopup(feature.popup); feature.popup.destroy(); delete feature.popup; } } Any help w
Tags (comma-separated)
Save Edits
Cancel