var map; /** * Function: initMap * Sets up the map, its layers and controls. * lat, lon, zoom are the initial map position, provided a permalink has not been used */ function initMap(lat, lon, zoom){ map = new OpenLayers.Map('map', { maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), numZoomLevels: 10, maxResolution: 'auto', units: 'm', controls: [], projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326") }); OpenLayers.ImgPath = "/ol_theme_green/"; var layerCloudMade = new OpenLayers.Layer.OSM("Default map", ["http://a.tile.cloudmade.com/8bafab36916b5ce6b4395ede3cb9ddea/27911/256/${z}/${x}/${y}.png", "http://b.tile.cloudmade.com/8bafab36916b5ce6b4395ede3cb9ddea/27911/256/${z}/${x}/${y}.png", "http://c.tile.cloudmade.com/8bafab36916b5ce6b4395ede3cb9ddea/27911/256/${z}/${x}/${y}.png"], {attribution: 'Data, imagery and map information provided by OpenStreetMap contributors and Cloudmade, CC-BY-SA.', buffer: 0}); var layerCycling = new OpenLayers.Layer.OSM.CycleMap("Cycling map", {attribution: 'Data, imagery and map information provided by OpenStreetMap and contributors, CC-BY-SA.', buffer: 0}); var layerPublicTransport = new OpenLayers.Layer.OSM("Public transport", "http://tile.xn--pnvkarte-m4a.de/tilegen/${z}/${x}/${y}.png", {attribution: 'Data, imagery and map information provided by OpenStreetMap and contributors, CC-BY-SA.', buffer: 0}); map.addLayers([layerCloudMade, layerCycling, layerPublicTransport]) var layerPower = addKMLLayer("Low carbon power", "kml/power.kml"); var layerWaste = addKMLLayer("Zero waste", "kml/waste.kml"); var layerFood = addKMLLayer("Sustainable food", "kml/food.kml"); var layerTransport = addKMLLayer("Sustainable transport", "kml/transport.kml"); var layerCulture = addKMLLayer("Culture and heritage", "kml/culture.kml"); var layersPOI = [layerPower, layerWaste, layerFood, layerTransport, layerCulture]; map.addLayers(layersPOI); var selectControl = new OpenLayers.Control.SelectFeature(layersPOI, {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect}); map.addControl(selectControl); selectControl.activate(); var layerSwitcherControl = new OpenLayers.Control.LayerSwitcher(); map.addControl(layerSwitcherControl); layerSwitcherControl.maximizeControl(); map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.Navigation()); map.addControl(new OpenLayers.Control.Permalink("link to this view")); map.addControl(new OpenLayers.Control.Attribution()); var lonLat = new OpenLayers.LonLat(lat, lon).transform(map.displayProjection, map.projection); if (!map.getCenter()) map.setCenter (lonLat, zoom); return map; } /** * Function: addKMLLayer * Sets up a KML layer with popup classes * layername and layerurl are pretty self-explanatory */ function addKMLLayer(layername,layerurl){ var kmllayer = new OpenLayers.Layer.GML(layername, layerurl, { format: OpenLayers.Format.KML, projection: new OpenLayers.Projection("EPSG:4326"), visibility: 0, formatOptions: { extractStyles: true, extractAttributes: true } }); return kmllayer; } /** * Various functions for popup windows */ function onPopupClose(evt) { // selectControl.unselect(selectedFeature); onFeatureUnselect(selectedFeature); } function onFeatureSelect(feature) { selectedFeature = feature; popup = new OpenLayers.Popup.FramedCloud("chicken", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(100,100), "