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)
|
}
|
}
|