Преобразование британского картографического приложения из OpenSpace API Ordnance Survey в API OS Maps - PullRequest
0 голосов
/ 05 марта 2020

Я нахожусь в процессе преобразования моих картографических приложений на основе браузера из OpenSpace API в OS Maps API. Я использую JavaScript.

Некоторое время у меня была гибридная система, использующая обе библиотеки API и теперь wi sh для устранения остаточных вызовов OpenSpace.

Он-лайн Руководство по конвертации из OpenSpace в OS Maps довольно ограничено и не говорит мне, как конвертировать между системами координат (широта / долгота в Briti sh National Grid и наоборот), что делает OpenSpace через встроенную функцию GridProjection.

Например, как мне добиться следующих целей в Картах ОС без вызова GridProjection?

var gridprojection = new OpenSpace.GridProjection(); // set-up a grid projection

var pt = osMap.getLonLatFromViewPortPx(e.xy); // get a clicked (BNG) point on a map

var lonlat = gridprojection.getLonLatFromMapPoint(pt); // use gridprojection to convert BNG to lat/long

И:

var lonlat = new OpenLayers.LonLat(long,lat); // create a lat/long point

var os = gridprojection.getMapPointFromLonLat(lonlat); // use gridprojection to convert lat/long to BNG

1 Ответ

0 голосов
/ 27 апреля 2020

Если вы используете OpenLayers 2, вам нужно будет включить библиотеку proj4 js версии 1

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/1.1.0/proj4js-combined.min.js"></script>

Затем добавить определение проекции BNG EPSG: 27700

Proj4js.defs["EPSG:27700"] = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs ";

Затем вы можете использовать метод преобразования объектов LonLat для преобразования в / из проекции lon / lat EPSG: 4326 и BNG

new OpenLayers.LonLat(long, lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:27700"))
...