OpenLayers transformeren de EPSG 27700-coördinaat naar Google 900913

Gemeenschap,

Ik maak mijn muisklikgebeurtenis vast en probeer de coördinaten om te zetten in Long Lat. Ik moet Long Lat als strings gebruiken, zodat ik een URL kan maken en deze in Google Street kan weergeven. Huidige transformatiecode drukt alleen de BNG-coördinaten af.

lonlat = map.getLonLatFromPixel(e.xy);

brit = new OpenLayers.Projection("EPSG:27700");
google = new OpenLayers.Projection("EPSG:900913");

lonlatclone = lonlat.clone()
lonlatclone.transform(brit, google)
//alert("You clicked near " + lonlatclone.lat + "N," + +lonlatclone.lon + "E");

Bedankt!

2

4 antwoord

Hebt u de definities van proj4js voor EPSG: 27700 geïmporteerd? http://spatialreference.org/ref/epsg/27700/proj4js/

27700 is standaard niet inbegrepen.

3
toegevoegd

Voor elke andere projectie dan EPSG: 4326 en EPSG: 900913 moet u het proj4js-project koppelen aan projectiedefinities

3
toegevoegd

EPSG: 900913 (dat is verouderd, je zou echt zijn moderne synoniem EPSG: 3857 moeten gebruiken) is een geprojecteerde CRS, niet lon/lat. Dus als je een bolvormig mercatorresultaat wilt, moet je transformeren van lon/lat naar EPSG: 3857, en EPSG: 27700 volledig overslaan.

Of als uw resultaten getLonLatFromPixel() in EPSG: 27700 voorkomen, moet u EPSG: 4326 als uw bestemming gebruiken.

2
toegevoegd

Heb je dit geprobeerd?

var newLonLat = lonlatclone.transform(brit, google);
1
toegevoegd