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}); map.addLayers([layerCloudMade]) 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(); map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.Navigation()); var lonLat = new OpenLayers.LonLat(lat, lon).transform(map.displayProjection, map.projection); 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: true, 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), "