从项目里抽取出来的几道地图相关的数学题

1. 已知圆心的经纬度和半径,如何求圆周上任意一点的经纬度?

     分析:

             设 地球的半径为 r_earth,   r_lat, 圆的经纬度分别为: longitude, latitude; 圆的半径为 r,  我们可以算出和圆心处于同一纬度上的坐标;其实我们只要算出经度差 degree 就可以了;

              1) 圆心同一纬度所在的半径 为 r_lat = Cos (latitude) * r_earth; 

              2)  可以将半径 r 约等于 看做一个弧度,即地球上圆周上的一小段;得到以下等式:

                     r / (2 PI * r_lat) = radius / 2 PI

                     radius = r / r_lat; 

                     将radius 换成 degree, degree = 180* r / PI * r_lat; 

                      即: degree = 180 * Cos (latitude) * r / r_earth * PI

    private static LatLng toRadiusLatLng(LatLng center, double radius) {

        double radiusAngle = Math.toDegrees(radius / RADIUS_OF_EARTH_METERS)

                             / Math.cos(Math.toRadians(center.latitude));

        return new LatLng(center.latitude, center.longitude + radiusAngle);

    }

             


2. 根据地球上任意两点的经纬度计算两点间的距离?

    private static double toRadiusMeters(LatLng center, LatLng radius) {

        float[] result = new float[1];

        Location.distanceBetween(center.latitude, center.longitude, radius.latitude, radius.longitude, result);

        return result[0];

    }


3. 在地图上画轨迹图时,怎么计算代表车辆的 “图标” 的角度? 

    待续...

猜你喜欢

转载自sunzeping.iteye.com/blog/1881735