废话不多说,开整
// 参数为寄件人经纬度和收件人经纬度
// 根据寄收件人经纬度弧度π进行rotate旋转计算
const getRotate = (po1, po2) => {if (!(po1 && po2)) return 0const lng_a = po1.longitudeconst lat_a = po1.latitudeconst lng_b = po2.longitudeconst lat_b = po2.latitudeconst a = ((90 - lat_b) * Math.PI) / 180const b = ((90 - lat_a) * Math.PI) / 180const AOC_BOC = ((lng_b - lng_a) * Math.PI) / 180const cosc = Math.cos(a) * Math.cos(b) + Math.sin(a) * Math.sin(b) * Math.cos(AOC_BOC)const sinc = Math.sqrt(1 - cosc * cosc)const sinA = (Math.sin(a) * Math.sin(AOC_BOC)) / sincconst A = (Math.asin(sinA) * 180) / Math.PIlet rotate = 0if (lng_b > lng_a && lat_b > lat_a) rotate = Aelse if (lng_b > lng_a && lat_b < lat_a) rotate = 180 - Aelse if (lng_b < lng_a && lat_b < lat_a) rotate = 180 - Aelse if (lng_b < lng_a && lat_b > lat_a) rotate = 360 + Aelse if (lng_b > lng_a && lat_b == lat_a) rotate = 90else if (lng_b < lng_a && lat_b == lat_a) rotate = 270else if (lng_b == lng_a && lat_b > lat_a) rotate = 0else if (lng_b == lng_a && lat_b < lat_a) rotate = 180if (rotate > 360) {rotate = rotate - 360}return rotate}