Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将英国地图应用程序从ArmonthSurvey OpenSpace API转换为OS Maps API_Javascript_Maps_Openlayers - Fatal编程技术网

Javascript 将英国地图应用程序从ArmonthSurvey OpenSpace API转换为OS Maps API

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

我正在将基于浏览器的映射应用程序从OpenSpace API转换为OS Maps API。我正在使用JavaScript

有一段时间,我有一个使用两个API库的混合系统,现在希望消除剩余的OpenSpace调用

从OpenSpace到操作系统地图的在线转换指南相当有限,并且没有告诉我如何在坐标系之间转换(Lat/Long到英国国家网格,反之亦然),OpenSpace通过内置的网格投影功能实现了这一点

例如,如果没有GridProjection调用,我如何在OS Maps中实现以下功能

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"))