Javascript 将英国地图应用程序从ArmonthSurvey OpenSpace API转换为OS Maps API
我正在将基于浏览器的映射应用程序从OpenSpace API转换为OS Maps API。我正在使用JavaScript 有一段时间,我有一个使用两个API库的混合系统,现在希望消除剩余的OpenSpace调用 从OpenSpace到操作系统地图的在线转换指南相当有限,并且没有告诉我如何在坐标系之间转换(Lat/Long到英国国家网格,反之亦然),OpenSpace通过内置的网格投影功能实现了这一点 例如,如果没有GridProjection调用,我如何在OS Maps中实现以下功能Javascript 将英国地图应用程序从ArmonthSurvey OpenSpace API转换为OS Maps API,javascript,maps,openlayers,Javascript,Maps,Openlayers,我正在将基于浏览器的映射应用程序从OpenSpace API转换为OS Maps API。我正在使用JavaScript 有一段时间,我有一个使用两个API库的混合系统,现在希望消除剩余的OpenSpace调用 从OpenSpace到操作系统地图的在线转换指南相当有限,并且没有告诉我如何在坐标系之间转换(Lat/Long到英国国家网格,反之亦然),OpenSpace通过内置的网格投影功能实现了这一点 例如,如果没有GridProjection调用,我如何在OS Maps中实现以下功能 var g
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
以及:
如果您使用的是OpenLayers 2,则需要包含proj4js版本1库
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/1.1.0/proj4js-combined.min.js"></script>
然后,您可以在LonLat对象上使用变换方法在lon/lat投影EPSG:4326和BNG之间进行转换
new OpenLayers.LonLat(long, lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("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 ";
new OpenLayers.LonLat(long, lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:27700"))