地图坐标 转换 容器坐标 来进行角度计算
先看效果图
根据地图上的两个经纬度坐标来确定线条的角度
首先,需要获取map容器对象
const map = window.weatherAnalysisMap
通过leaflet 经纬度坐标转容器坐标 map.latLngToContainerPoint(lat, lon)
拿到该经纬度在容器内的坐标点
得到起始坐标点和终止坐标点之后 通过atan2()
最后将得到的角度值通过计算圆角度计算
360 * Math.atan2(diffY, diffX) / (2 * Math.PI) + 90
最终代码如下:
calcAngle(start, end) {
// 获取map容器对象
const map = window.weatherAnalysisMap;
// 通过map 将起始点终止点经纬度坐标转容器坐标
const pStart = map.latLngToContainerPoint(start);
const pEnd = map.latLngToContainerPoint(end);
// 计算容器坐标点位
const diffX = pStart.x - pEnd.x;
const diffY = -(pStart.y - pEnd.y);
// 通过坐标计算角度 逆时针角度
let angle = 360 * Math.atan2(diffY, diffX) / (2 * Math.PI) + 90;
// 将逆时针角度转换成正角度
angle = angle < 0 ? -angle : 360 - angle;
return angle;
},