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

È stato utile?

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 likeOsmarenderorMapnik:

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top