Table of Contents
OpenStreetMap con OpenLayers
Le mappe di OpenStreetMap (ma anche quelle di Google Maps e di Virtual Earth) utilizzano una proiezione Spherical Mercator. Tale proiezione ha codice EPSG:900913, che purtroppo non è compresa tra le proiezioni di PROJ.
Su un host GNU/Linux è necessario aggiungere una riga al file /usr/share/proj/epsg
:
# Spherical Mercator <900913> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs
Vedere la FAQ a proposito di PROJ.4 e Virtual Earth.
Il codice JavaScript
OpenLayers supporta attualmente le mappe OpenStreetMap tramite l'oggetto OpenLayers.Layer.OSM()
sebbene nella documentazione ufficiale (versione 2.10) questo non sia ancora documentato.
Esiste la possibilità di caricare una piccola libreria JavaScript che estende l'oggetto OpenLayers.Layer.OSM()
e permette di avere le sotto-classi Mapnik
, Osmarender
e CycleMap
.
Il codice JavaScript è disponibile al seguente indirizzo: http://www.openstreetmap.org/openlayers/OpenStreetMap.js.
Alcuni esempi basici si trovano qui: OpenLayers Simple Example.
Ecco ad esempio un estratto di codice JavaScript:
// Define the map object. map = new OpenLayers.Map('map', { maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34), controls: [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.KeyboardDefaults(), new OpenLayers.Control.Scale() ], scales: [500000, 200000, 100000, 50000, 25000, 10000, 5000], units: 'm', projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326") }); // Add OpenStreetMap Mapnik layer. var layerMapnik = new OpenLayers.Layer.OSM("OpenStreetMap"); layerMapnik.transitionEffect = "resize"; layerMapnik.isBaseLayer = true; map.addLayer(layerMapnik);
Mostrare un mark sulla mappa OSM
Fare zoom e pan quanto basta per mettere il punto desiderato al centro della mappa, quindi cliccare su Permalink in basso a destra. A questo punto basta modificare l'URL, sostituendo lat
e lon
rispettivamente con mlat
e mlon
. Un esempio:
http://www.openstreetmap.org/?mlat=43.8200&mlon=11.13311&zoom=16&layers=0B00FTF
Questo trucco funziona sul sito di OpenStreetMap, purtroppo non funziona su altri simili che usano sempre OpenLayers, ad esempio http://www.informationfreeway.org/.