Howto real time tiles rendering with mapnik and mod python/index.html
Jump to navigation
Jump to search
My exemple index.html file for openlayers and my setup
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-15" /> <style type="text/css"> #map { left:0px; width: 100%; height: 92%; border: 0px; padding: 0px; position: absolute; } body { border: 0px; margin: 0px; margin-bottom: 2px; padding: 0px; height: 100%; } #permalinks { position: absolute; bottom: 0px; right: 10px; text-align: right; z-index: 1008; font-size:12px; } #attributions { position: absolute; bottom: 0px; left: 10px; font-size:12px; text-align: right; z-index: 1008; } a:link, a:visited { color: #5ca5ff; text-decoration: none; } a:hover { color: #ffcc66; text-decoration: none; } li { list-style-type: none; display:table; } </style> <script src="/libs/OpenLayers.js"></script> <script src="/libs/styles.js"></script> <script type="text/javascript"> <!-- var map; function qs_init() { var params = {}; var qs = location.search.substring(1, location.search.length); qs = qs.replace(/\+/g, ' '); var args = qs.split('&'); // parse out name/value pairs separated via & for (var i = 0; i < args.length; i++) { var pair = args[i].split('='); var name = decodeURIComponent(pair[0]); var value = (pair.length==2)? decodeURIComponent(pair[1]): name; params[name] = value; } return params; } function get_osm_url (bounds) { var res = this.map.getResolution(); var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); var z = this.map.getZoom(); var limit = Math.pow(2, z); if (y < 0 || y >= limit) { return null; } else { return this.url + z + "/" + x + "/" + y + "." + this.type; } } var epsg4326 = new OpenLayers.Projection("EPSG:4326"); function setMapCenter(center, zoom) { var numzoom = map.getNumZoomLevels(); if (zoom >= numzoom) zoom = numzoom - 1; map.setCenter(center.clone().transform(epsg4326, map.getProjectionObject()), zoom); } function init() { map = new OpenLayers.Map('map', { maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), numZoomLevels:19, maxResolution: 156543.0399, units:'m', projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), controls:[ new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.Navigation(), new OpenLayers.Control.Attribution(), new OpenLayers.Control.MouseDefaults(), new OpenLayers.Control.Permalink("permalink"), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.MousePosition() ] }); var permalink_potlatch = new OpenLayers.Control.Permalink("permalink.potlatch"); permalink_potlatch.base = "http://www.openstreetmap.org/edit"; map.addControl(permalink_potlatch); /* Base layers inclusion */ var layers = []; /* Here is you want to add the mapnik@osm.org layer by default */ var l = new OpenLayers.Layer.TMS( "Mapnik@osm.org", ["http://tile.openstreetmap.org/"], {type:'png', getURL: get_osm_url, transitionEffect: 'resize', displayOutsideMaxExtent: true }, {'buffer':1} ); layers.push(l); /* Automatic inclusion of all base layers in /libs/styles.js */ for ( var idx in all_available_styles ) { var name = all_available_styles[idx]; var l = new OpenLayers.Layer.TMS( name, ["/tiles/renderer.py/"+idx+"/"], {type:'jpeg', getURL: get_osm_url, transitionEffect: 'resize', displayOutsideMaxExtent: true }, {'buffer':1} ); layers.push(l); } /* Automatic inclusion of all overlays layers in /libs/styles.js Transparent overlays (must be png with alpha channel) */ for ( var idx in all_available_overlays ) { var name = all_available_overlays[idx]; var overlay = new OpenLayers.Layer.TMS( name, ["/tiles/renderer.py/"+idx+"/"], {type:'png', getURL: get_osm_url, displayOutsideMaxExtent: true , 'buffer':1, isBaseLayer: false, visibility: false} ); layers.push(overlay); } map.addLayers(layers); var params = qs_init(); if (! (params["lat"] || params["lon"] || params["zoom"])) { setMapCenter(new OpenLayers.LonLat(2.3,48.8), 7); } } // --> </script> </head> <!-- content --> <body onload="init()"> <div id="map"></div> <div id="attributions"> <p> Copyright : <a href="http://www.openstreetmap.org">openstreetmap.org</a> & contributors CC-BY-SA. </p> </div> <div id="permalinks"> <ul> <li><a id="permalink" href="">Permalink</a></li> <li><a id="permalink.potlatch" href="">Edit on Potlatch</a></li> </ul> </div> </body> </html>