14#if defined(_WIN32) && !defined(_USE_MATH_DEFINES)
15# define _USE_MATH_DEFINES
37 template <
class float_type>
38 static void LatLonToMercator(
double lat,
double lon,
double scale, float_type &mx, float_type &my) {
40 my = scale *
EARTH_RADIUS_EQUA * std::log(std::tan((90.0 + lat) * Math::Pi<double>() / 360.0));
44 static void MercatorToLatLon(
double mx,
double my,
double scale,
double &lat,
double &lon) {
46 lat = 360.0 * std::atan(std::exp(my / (
EARTH_RADIUS_EQUA * scale))) / Math::Pi<double>() - 90.0;
69 location.
x, -location.
y,
70 result.latitude, result.longitude);
double altitude
经度,初始化为0.0。
GeoLocation Transform(const Location &location) const
使用此对象作为地理参考,将给定的 location 转换为 GeoLocation。
double latitude
定义 GeoLocation 类,它是一个公开的成员。
double longitude
纬度,初始化为0.0。
static constexpr T ToRadians(T deg)
static double LatToScale(double lat)
将纬度转换为墨卡托投影所需的比例尺
static void LatLonToMercator(double lat, double lon, double scale, float_type &mx, float_type &my)
将纬度、经度和比例尺转换为墨卡托坐标系中的mx/my
static void MercatorToLatLon(double mx, double my, double scale, double &lat, double &lon)
将墨卡托坐标系中的mx/my转换回纬度、经度
static constexpr double EARTH_RADIUS_EQUA
定义地球赤道半径的常量,单位是米
static void LatLonAddMeters(double lat_start, double lon_start, double dx, double dy, double &lat_end, double &lon_end)
在给定的纬度、经度上添加米为单位的dx/dy,并返回新的纬度、经度