/** * 火星坐标系 (GCJ-02) to 84 * * @param lon * @param lat * @return */ public static Gps gcj_To_Gps84(double lat, double lon) { Gps gps = transform(lat, lon); double lontitude = lon * 2 - gps.getWgLon(); double latitude = lat * 2 - gps.getWgLat(); return new Gps(latitude, lontitude); }
/** * (BD-09)-->84 * * @param bd_lat * @param bd_lon * @return */ public static Gps bd09_To_Gps84(double bd_lat, double bd_lon) { Gps gcj02 = MapUtils.bd09_To_Gcj02(bd_lat, bd_lon); Gps map84 = MapUtils.gcj_To_Gps84(gcj02.getWgLat(), gcj02.getWgLon()); return map84; }
public static void main(String[] args) { // 北斗芯片获取的经纬度为WGS84地理坐标 31.426896,119.496145 Gps gps = new Gps(31.426896, 119.496145); System.out.println("gps :" + gps); Gps gcj = gps84_To_Gcj02(gps.getWgLat(), gps.getWgLon()); System.out.println("gcj :" + gcj); Gps star = gcj_To_Gps84(gcj.getWgLat(), gcj.getWgLon()); System.out.println("star:" + star); Gps bd = gcj02_To_Bd09(gcj.getWgLat(), gcj.getWgLon()); System.out.println("bd :" + bd); Gps gcj2 = bd09_To_Gcj02(bd.getWgLat(), bd.getWgLon()); System.out.println("gcj :" + gcj2); }