feiyu02
2024-01-26 01eae19a4870033e879a3faa6749eece92926cab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.flightfeather.uav.common.utils
 
import kotlin.math.PI
import kotlin.math.cos
import kotlin.math.sin
 
object MapUtil {
 
    private const val Ea = 6378137 //赤道半径
    private const val Eb = 6356725 //极半径
 
    /**
     * 根据坐标点、距离和角度,获取另一个坐标
     * @param pos 坐标点(GPS系)
     * @param len 距离(米)
     * @param radian 弧度
     */
    fun getPointByLen(pos: Pair<Double, Double>, len: Double, radian: Double): Pair<Double, Double> {
        val dx = len * sin(radian)
        val dy = len * cos(radian)
        val ec = Eb + (Ea - Eb) * (90.0 - pos.second) / 90.0
        val ed = ec * cos(pos.second * PI / 180)
        val lng = (dx / ed + pos.first * PI / 180.0) * 180.0 / PI
        val lat = (dy / ec + pos.second * PI / 180.0) * 180.0 / PI
        return Pair(lng, lat)
    }
}