高德地图与GPS经纬度转换
2017-06-07 15:38
260 查看
public class aMapToWGS { private final static double a=6378245.0; private final static double pi=3.14159265358979324; private final static double ee=0.00669342162296594626; //gcj-02 to wgs-84 public static LatLonPoint toWGS84Point(double latitude,double longitude){ LatLonPoint dev=calDev(latitude, longitude); double retLat = latitude-dev.getLatitude(); double retLon=longitude-dev.getLongitude(); dev=calDev(retLat, retLon); retLat=latitude-dev.getLatitude(); retLon=longitude-dev.getLongitude(); return new LatLonPoint(retLat, retLon); } //wsg84 to gcj02 public static LatLonPoint toGCJ02Piont(double latitude,double longitude){ LatLonPoint dev=calDev(latitude, longitude); double retLat = latitude-dev.getLatitude(); double retLon=longitude-dev.getLongitude(); return new LatLonPoint(retLat, retLon); } private static LatLonPoint calDev(double wgLat,double wgLon){ if(isOutofChina(wgLat,wgLon)){ return new LatLonPoint(0,0); } double dLat=calLat(wgLon-105.0,wgLat-35.0); double dLon=calLon(wgLon-105.0, wgLat-35.0); double radLat=wgLat/180.0*pi; double magic=Math.sin(radLat); magic=1-ee*magic*magic; double sqrtMagic=Math.sqrt(magic); dLat=(dLat*180.0)/((a*(1-ee))/(magic*sqrtMagic)*pi); dLon=(dLon*180.0)/(a/sqrtMagic*Math.cos(radLat)*pi); return new LatLonPoint(dLat,dLon); } private static double calLat(double x, double y) { double ret=-100.0+2.0*x+3.0*y+0.2*y*y+0.1*x*y+0.2*Math.sqrt(Math.abs(x)); ret +=(20.0*Math.sin(6.0*x*pi)+20.0*Math.sin(2.0*x*pi))*2.0/3.0; ret +=(20.0*Math.sin(y*pi)+40.0*Math.sin(y/3.0*pi))*2.0/3.0; ret +=(160.0*Math.sin(y/12.0*pi)+320*Math.sin(y*pi/30.0))*2.0/3.0; return ret; } private static double calLon(double x,double y){ double ret=300.0+x+2.0*y+0.1*x*x+0.1*x*y+0.1*Math.sqrt(Math.abs(x)); ret +=(20.0*Math.sin(6.0*x*pi)+20.0*Math.sin(2.0*x*pi))*2.0/3.0; ret +=(20.0*Math.sin(x*pi)+40.0*Math.sin(x/3.0*pi))*2.0/3.0; ret +=(150.0*Math.sin(x/12.0*pi)+300.0*Math.sin(x/30.0*pi))*2.0/3.0;; return ret; } private static boolean isOutofChina(double lat, double lon) { if(lon<72.004 || lon>137.8347){ return true; } if(lat<0.8293 || lat>55.8271){ return true; } return false; } }
相关文章推荐
- IOS将GPS定位经纬度转换为高德地图经纬度
- BINGMAPS GPS经纬度格式转换。
- java实现高德地图经纬度转换成百度地图
- GPS经纬度值 转换成 区域
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- GPS经纬度转换屏幕坐标
- GPS经纬度坐标转换的方法
- GPS\谷歌\AMAP等地图经纬度转换为百度地图经纬度
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- GPS设备定位的经纬度偏移转换
- GPS经纬度及谷歌地图坐标转换为百度地图坐标,解决地图显示经纬度的偏移问题
- GPS经纬度数据转换到以米单位的平面坐标系
- 高德地图-Android-逆地理转换:经纬度转换成地址
- 根据经纬度计算距离的公式、百度坐标转换成GPS坐标(PHP版)
- ios开发百度高德地图经纬度相互转换的算法解析
- GPS经纬度转换为百度坐标
- GPS经纬度转换为百度坐标
- 高德地图地址和经纬度转换
- 关于高德地图转换经纬度为屏幕点,方便自定义需链接网络的marker且添加属性动画
- 高德地图-Android-逆地理转换:经纬度转换成地址