JAVA实现WGS84、百度坐标系、高德坐标系转化工具类。
主要是WGS84(大地坐标系)、GCJ02(国测局坐标系,如高德地图、腾讯地图、谷歌中国范围地图)、BD09(百度坐标系)三种主流坐标系之间的转换。
工具类
public class Gps {
private double wgLat; // 纬度
private double wgLon; // 经度
public Gps(){
}
public Gps(double wgLat, double wgLon) {
setWgLat(wgLat);
setWgLon(wgLon);
}
public double getWgLat() {
return wgLat;
}
public void setWgLat(double wgLat) {
this.wgLat = wgLat;
}
public double getWgLon() {
return wgLon;
}
public void setWgLon(double wgLon) {
this.wgLon = wgLon;
}
@Override
public String toString() {
return wgLat + "," + wgLon;
}
}
/**
* 各地图API坐标系统比较与转换;
*
* WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,
* 谷歌地图采用的是WGS84地理坐标系(中国范围除外);
*
* GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
* 高德地图、腾讯地图、谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系;
*
* BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系;
*
* 搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。
*
* @author
*
*/
public class PositionUtil {
private static double pi = 3.1415926535897932384626;
private static double a = 6378245.0;
private static double ee = 0.00669342162296594323;
/**
* 84 to 火星坐标系 (GCJ-02)
*
* World Geodetic System ==> Mars Geodetic System
*
* @param lat
* @param lon
* @return
*/
public static Gps gps84_To_Gcj02(double lat, double lon) {
if (outOfChina(lat, lon)) {
return null;
}
double dLat = transformLat(lon - 105.0, lat - 35.0);
double dLon = transformLon(lon - 105.0, lat - 35.0);
double radLat = lat / 180.0 * pi;
double magic = Math.sin(radLat)

最低0.47元/天 解锁文章
569

被折叠的 条评论
为什么被折叠?



