Impostare il centro mappa

In OL3 il sistema di proiezione di default è il WGS84\Spherical Mercator (o Pseudo Mercatore) cioè lo stesso usato anche in Google Maps e in OSM; esso è identificato con l’ EPSG 3857 e le coordinate (X,Y) sono espresse in metri.

Saperlo è importante, perchè se vogliamo indicare le coordinate del centro della vista mappa, dobbiamo esprimerle in questo sistema; per farlo si usa l’opzione center dell’oggetto ol.View.

Supponiamo, per esempio, che vogliamo centrare la mappa nella città di Melfi (prov. di Potenza); le sue coordinate in EPSG 3857 sono più o meno: X=1742742, Y=5011762 e il codice è il seguente:

Però succede abbastanza spesso che abbiamo delle coordinate espresse in un altro sistema; il più delle volte le coordinate sono in WGS84 (EPSG 4326) che ricordiamo è il sistema  geografico mondiale, con coordinate (Lon, Lat) espresse in gradi. Allora, o prima ci determiniamo le corrispondenti coordinate in EPSG 3857 (con un trasformatore di coordinate) oppure usiamo il metodo ol.proj.transform che trasforma e restituisce sul posto, le date coordinate [X,Y] da un sistema A ad un sistema B:

ol.proj.transform([X,Y], sist.A, sist.B)  oppure  ol.proj.transform([Lon,Lat], sist.A, sist.B)

Se allora le coordinate di Melfi in EPSG 4326 sono: Lon=15.655325, Lat=40.996070, il codice per fissare il centro mappa diventa così:

Vedi qui un esempio completo:

webmap esempio

Un’altra possibilità consiste nel cambiare il sistema di proiezione della mappa e passare da quello di default a uno desiderato, tramite la proprietà projection di ol.View. Facendo così, possiamo indicare le coordinate di un punto direttamente col sistema impostato, senza bisogno di trasformazioni.

Nel nostro esempio, se vogliamo usare il sistema EPSG 4326, il codice  diventa:

E’ ovvio che in questo modo, se i layers che costituiscono la mappa hanno un CRS (Coordinate Reference System) differente, vengono riproiettati sul sistema (projection) impostato nella ol.view e quindi possono subire deformazioni. Per esempio nel nostro caso, essendo “basemap1” costituito da tiles di OSM, che è in EPSG 3857, vedremo che la mappa rappresentata con EPSG 4326 apparirà schiacciata.

se questo articolo ti è piaciuto condividilo: