坐标系转换

您所在的位置:网站首页 threejs经纬度转坐标 坐标系转换

坐标系转换

2023-09-22 08:01| 来源: 网络整理| 查看: 265

本章向您介绍 JS API 中坐标系转换,其中包含如下内容:

地图容器坐标与经纬度的互换 经纬度与地图平面坐标的互换 经纬度与三维坐标的互换

地图容器坐标与经纬度的互换

真实世界中的地理位置是使用经纬度进行描述,然而当地图被抽象到浏览器的页面里时,真实的地址位置则需要转换为地图容器像素坐标,反之亦然。容器坐标与经纬度坐标关系如下图所示:

 通过下面 Map 对象上的两个接口,您可以进行容器坐标与经纬度互转,这个在鼠标进行点击标记地理位置时很常用:

1. 容器坐标转经纬度坐标 map.containerToLnglatJavaScript// 容器坐标,原点为左上角 var px = 600; var py = 300; // 构造成 Pixel 对象后传入 var pixel = new AMap.Pixel(px, py); var lnglat = map.containerToLngLat(pixel); // 获得 LngLat 对象2. 经纬度坐标转容器坐标 map.lngLatToContainerJavaScript// 地理经纬度坐标 var lon = 116.4; var lat = 39.9; // 构造成 LngLat 对象后传入 var lnglat = new AMap.LngLat(lon, lat); var pixel = map.lngLatToContainer(lnglat); // 获得 Pixel 对象

查看 参考手册

经纬度与平面地图像素坐标的互换

JS API 还会提供经纬度投影到平面地图像素坐标的转换接口。

其中 JS API 通过墨卡托投影,将球面坐标投影到平面平面坐标系上。在不同缩放等级(zoom)下,所投影的平面坐标是不同的,其关系为:缩放等级每扩大一倍,平面坐标就扩大两倍。

具体的转换关系,可以参考下图:

这里使用到的两个方法,值得注意的是,接口第二个参数必需指定要转换的缩放等级:

1. 经纬度转换平面地图像素坐标 map.lnglatToPixelJavaScriptvar lon = 116.4; var lat = 39.9; // 数组格式传入,第二个参数指定缩放等级 var pixel = mapObj.lnglatToPixel([lon, lat], 3); // 返回 Pixel 对象 // 构造成 LngLat 对象后传入,第二个参数指定缩放等级 var pixel = mapObj.lnglatToPixel(new AMap.LngLat(lon, lat), 3); // 返回 Pixel 对象2. 平面地图像素坐标转换经纬度 map.pixelToLngLatJavaScriptvar x = 420; var y = 195; // 构造成 Pixel 对象传入,第二个参数指定缩放等级 var lnglat = mapObj.pixelToLngLat(new AMap.Pixel(x, y), 3); // 返回 LngLat 对象

查看 参考手册

经纬度与三维坐标的互换

除了平面像素坐标转换,JS API 还提供了在 3D 模式下的坐标转换接口,使用方法和上面的类似。

需要特别说明的是,三维坐标系使用了 20 级的平面像素坐标作为基础,并且将坐标系原点调整为中国大地原点。X 轴方向是正东,Y 轴为正南,Z 轴指向地面。具体如下图所示:

1. 经纬度转换为三维坐标系下的 XY 坐标 map3D.lngLatToGeodeticCoordJavaScriptvar lnglat = [116.4, 39.9]; // 返回 3D 坐标系下的 Pixel var coord = map.lngLatToGeodeticCoord(lnglat);

2. 三维坐标系下的 XY 坐标转换为经纬度 map3D.geodeticCoordToLngLatJavaScript// 返回 3D 坐标系下的 LngLat var lnglat = map.geodeticCoordToLngLat(new AMap.Pixel(5571367.773333311, -5023481.09450531));

查看 参考手册



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3