1addInitEvent(function () { 2 this.init_osm = function (div) { 3 var params = this.getParams(div); 4 var points = this.readPoints(div); 5 while (div.firstChild) { 6 div.removeChild(div.firstChild); 7 } 8 var map = new OpenLayers.Map (div.id, { 9 controls:[ 10 new OpenLayers.Control.Navigation(), 11 new OpenLayers.Control.PanZoomBar(), 12 new OpenLayers.Control.LayerSwitcher(), 13 new OpenLayers.Control.Attribution()], 14 maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), 15 maxResolution: 156543.0399, 16 numZoomLevels: 19, 17 units: 'm', 18 projection: new OpenLayers.Projection("EPSG:900913"), 19 displayProjection: new OpenLayers.Projection("EPSG:4326") 20 } ); 21 22 var layers = new Object(); 23 layers['osmarender'] = new OpenLayers.Layer.OSM.Osmarender("Osmarender"); 24 layers['mapnik'] = new OpenLayers.Layer.OSM.Mapnik("Mapnik"); 25 26 if (!layers[params['layer']]) { 27 params['layer'] = 'mapnik'; 28 } 29 map.addLayer(layers[params['layer']]); 30 31 for (var layer in layers) { 32 if (layer != params['layer']) { 33 map.addLayer(layers[layer]); 34 } 35 } 36 37 var layerMarkers = new OpenLayers.Layer.Markers("Markers"); 38 map.addLayer(layerMarkers); 39 40 var lonLat = new OpenLayers.LonLat(params['lon'], params['lat']).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()); 41 42 map.setCenter(lonLat, params['zoom']); 43 44 if (isArray(points)) { 45 var pLonLat; 46 var size = new OpenLayers.Size(21,25); 47 var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); 48 var icon; 49 for(var p = 0; p < points.length; p++) { 50 var point = points[p]; 51 var pLonLat = new OpenLayers.LonLat(point.lon, point.lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()); 52 icon = new OpenLayers.Icon('http://www.openstreetmap.org/openlayers/img/marker.png',size,offset); 53 layerMarkers.addMarker(new OpenLayers.Marker(pLonLat,icon)); 54 } 55 } 56 }; 57 this.getParams = function (div) { 58 var url = div.getElementsByTagName('a')[0].href; 59 url = url.split('?')[1]; 60 var params = url.split('&'); 61 var param; 62 for (var j = 0; j < params.length; j++) { 63 param = params[j].split('='); 64 delete params[j]; 65 if (param[0] != 'layer') { 66 param[1] = parseFloat(param[1]); 67 } 68 params[param[0]] = param[1]; 69 } 70 return params; 71 }; 72 this.readPoints = function (div) { 73 var comment = div.firstChild; 74 while (comment.nodeType != 8) { 75 comment = comment.nextSibling; 76 } 77 return eval(comment.data); 78 }; 79 var osm_divs = getElementsByClass('openstreetmap', document, 'div'); 80 for (var i=0; i < osm_divs.length; i++) { 81 var osm_div = osm_divs[i]; 82 osm_div.id = 'osm_'+i; 83 this.init_osm(osm_div); 84 } 85}); 86