Variazione Proiezione in OpenLayers Mappa
-
28-09-2019 - |
Domanda
Voglio set "EPSG: 4326", come la proiezione di un OpenLayers mappa, ma quando ho provato, ho sempre arrivare "EPSG: 900913".
function init() {
var options = {
projection: new OpenLayers.Projection("EPSG:4326") // ignored
};
map = new OpenLayers.Map('map', options);
var layer = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
map.addLayer(layer);
...
alert(map.getProjection()); // returns "EPSG:900913"
...
}
La mappa di base è aperta mappa stradale.
Come posso impostare la proiezione di EPSG: 4326
Soluzione
E 'Osmarender che ha un hardcoded 900913 proiezione, niente da fare a tale proposito. Ma avete pensato di prendere le cose il contrario? Trasformare le vostre coordinate o strato di EPSG: 900913? Controllare la documentazione qui: http://docs.openlayers.org/library/spherical_mercator.html
Altri suggerimenti
milovanderlinden ha sottolineato, è necessario trasformare i valori / longitudine latitudine (come quello usato nelle mappe di Google o Bing), prima che il può essere applicato in strati di OpenStreetMap likeOsmarender
orMapnik
:
var datapoint = new OpenLayers.LonLat(-71.0, 42.0);
var proj_1 = new OpenLayers.Projection("EPSG:4326");
var proj_2 = new OpenLayers.Projection("EPSG:900913");
datapoint.transform(proj_1, proj_2);
Qual è il livello di base. Stai cercando di disegnare su Maps GMaps o Bing? Se è così allora OpenLayers può tentare di ottenere i dati per abbinare la proiezione dello strato di base in modo che le linee in modo corretto.
Non è un bug, è una caratteristica. Spherical Mercator è una proiezione pixel quadrati, in modo che le OpenLayers funzioni vettoriali possono essere posizionati con precisione sulla mappa - questo non è il caso con WSG-84 (EPSG: 4326)