将纬度/经度转换为 X/Y

Convert latitude / longitude to X/Y

我正在从事地理本地化项目。我有一张我校园的图像,我找到了 4 个角中的 4 Long/Lat,但现在我一直在寻找一种方法将其转换为像素定位。 我找到了很多关于这个的主题,但我不是很清楚。

这是可用于获取两个 LatLon 坐标之间的距离(以米为单位)的方法。一旦你有了它,那么只需一些简单的数学运算就可以将它映射到你的图像的像素中。

public static double distance(LatLon loc1, LatLon loc2) {
    double EARTH_RADIUS = 6371000; // in meters

    double lat1 = Math.toRadians(loc1.latitude);
    double lon1 = Math.toRadians(loc1.longitude);
    double lat2 = Math.toRadians(loc2.latitude);
    double lon2 = Math.toRadians(loc2.longitude);

    // based on https://www.movable-type.co.uk/scripts/latlong.html

    double a = Math.sin((lat2 - lat1) / 2.0);
    double b = Math.sin((lon2 - lon1) / 2.0);
    double c = a * a + Math.cos(lat1) * Math.cos(lat2) * b * b;
    double distanceRadians = 2.0 * Math.asin(Math.sqrt(c));

    return EARTH_RADIUS * distanceRadians;
}

纬度范围 [-90,90],经度范围 [-180,180]