User Tools

Site Tools


Sidebar

No ai soldati italiani all'estero

Indice

Eventi

Energia

Rigacci.Org usa energia elettrica da fonti rinnovabili, grazie al gruppo di acquisto Merci Dolci.

Merci Dolci - Energia Rinnovabile

Software libero!

Petizione contro i brevetti software

Faunalia: Soluzioni GIS professionali

Debian

www.gnu.org www.kernel.org

tecnica:gps_cartografia_gis:openlayers_900913

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/.

tecnica/gps_cartografia_gis/openlayers_900913.txt · Last modified: 2010/11/05 14:47 by niccolo