/** * 地图坐标相关计算 */ import { map } from './index_old'; export default { /** * 根据坐标点、距离和角度,得到另一个坐标点 * @param {*} pos * @param {*} distance 米 * @param {*} angle */ getLatLon: function (pos, distance, angle) { var Ea = 6378137; // 赤道半径 var Eb = 6356725; // 极半径 var dx = distance * Math.sin((angle * Math.PI) / 180); var dy = distance * Math.cos((angle * Math.PI) / 180); var ec = Eb + ((Ea - Eb) * (90.0 - pos[1])) / 90.0; var ed = ec * Math.cos((pos[1] * Math.PI) / 180); var lng = ((dx / ed + (pos[0] * Math.PI) / 180.0) * 180.0) / Math.PI; var lat = ((dy / ec + (pos[1] * Math.PI) / 180.0) * 180.0) / Math.PI; return [lng, lat]; }, /** * 将二维数组形式的坐标点数组转换为高德地图中 LngLat 类 * @param {*} lnglats * @returns */ parse2LngLat: function (lnglats) { // 创建包含4个节点的折线及文字标注 var path = []; lnglats.forEach(function (value) { // eslint-disable-next-line no-undef path.push(new AMap.LngLat(value[0], value[1])); }); return path; }, /** * 将高德地图的经纬度坐标转换为图形坐标 * @param {*} lnglats_GD * @returns */ lngLatToGeodeticCoord: function (lnglats_GD) { var coors_GD = []; for (let i = 0; i < lnglats_GD.length; i++) { var gd = lnglats_GD[i]; // eslint-disable-next-line no-undef var r = new AMap.LngLat(...gd); var p = map.lngLatToGeodeticCoord(r); // **记录转换后的3D地图图形坐标 coors_GD.push(p); } return coors_GD; } };