将GPS坐标转换成百度地图坐标,将baidu 经纬度 转换为google经纬度
来源:互联网 发布:pewin32什么软件 编辑:程序博客网 时间:2024/04/30 04:10
import com.lvmama.comm.utils.HttpsUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
/**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法.
* @see http://blog.csdn.net/coolypf/article/details/8569813
* bd_encrypt 将 GCJ-02 坐标转换成 BD-09 坐标, bd_decrypt 反之.
*/
public class CoordinateUtil {
private final static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
private final static String baiduLbsAk = "tPhNm3k9msoHmBjGPq9DLZNF";
private final static String baiduApi = "http://api.map.baidu.com/geoconv/v1/";
public static void bd_encrypt(double gg_lat, double gg_lon, double[] pos) {
double x = gg_lon, y = gg_lat;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
pos[0] = z * Math.cos(theta) + 0.0065;
pos[1] = z * Math.sin(theta) + 0.006;
}
public static void bd_decrypt(double bd_lat, double bd_lon, double[] pos) {
double x = bd_lon - 0.0065, y = bd_lat - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
//经度
pos[0] = z * Math.cos(theta);
//伟度
pos[1] = z * Math.sin(theta);
}
/**
* 将GPS坐标转换成百度地图坐标
*/
public static void gps_baidu_decrypt(double gps_lat, double gps_lon, double[] pos) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("coords", gps_lon + "," + gps_lat);
params.put("from", "1"); //gps
params.put("to", "5"); //baidu
params.put("ak", baiduLbsAk);
String json = HttpsUtil.requestGet(baiduApi, params);
JSONObject data = JSONObject.fromObject(json);
int status = data.getInt("status");
// x:经度 y:纬度
if (0 == status) {
JSONArray result = data.getJSONArray("result");
if (result != null) {
pos[0] = result.getJSONObject(0).getDouble("x");
pos[1] = result.getJSONObject(0).getDouble("y");
}
}
// 如果接口无法使用,则使用原来的经纬度
else {
pos[0] = gps_lon;
pos[1] = gps_lat;
}
}
public static void main(String[] args) {
// double latitude = 31.539241;
// double longitude = 121.683632;
// double pos[] = new double[2];
// CoordinateUtil.bd_decrypt(latitude, longitude, pos);
// System.out.println("百度经度:" + longitude + ",纬度:" + latitude);
// System.out.println("高德经度:" + pos[0] + ",纬度:" + pos[1]);
// double pos[] = new double[2];
// double latitude = 31.23163273;
// double longitude = 121.37601939;
// CoordinateUtil.gps_baidu_decrypt(latitude, longitude, pos);
// System.out.println("GPS经度:" + longitude + ",纬度:" + latitude);
// System.out.println("百度经度:" + pos[0] + ",纬度:" + pos[1]);
}
}
//将baidu 经纬度 转换为google经纬度
//google经度
double googleLongitude=0;
//google纬度
double googleLatitude=0;
for(ComCoordinateVo comCoordinateVo : comCoordinateVoList) {
if(comCoordinateVo!=null){
ClientComCoordinateVo clientComCoordinateVo = new ClientComCoordinateVo();
if("BAIDU".equalsIgnoreCase(comCoordinateVo.getCoordType())){
double pos[] = new double[2];
if(comCoordinateVo.getLatitude()!=null && comCoordinateVo.getLongitude()!=null){
CoordinateUtil.bd_decrypt(comCoordinateVo.getLatitude(), comCoordinateVo.getLongitude(), pos);
//将baidu 经纬度 转换为google经纬度
googleLongitude =pos[0];
googleLatitude =pos[1];
}
}
BeanUtils.copyProperties(comCoordinateVo, clientComCoordinateVo);
clientComCoordinateVos.add(clientComCoordinateVo);
}
}
- 将GPS坐标转换成百度地图坐标,将baidu 经纬度 转换为google经纬度
- 经由过程百度地图API,将百度坐标转换成GPS经纬度
- 通过百度地图API,将百度坐标转换成GPS经纬度
- 通过百度地图API,将百度坐标转换成GPS经纬度
- 通过百度地图API,将百度坐标转换成GPS经纬度
- GPS坐标(经纬度)转换为百度坐标(经纬度)续
- GPS经纬度转换为百度坐标
- 通过Java将GPS坐标转换为百度地图坐标
- GPS经纬度及谷歌地图坐标转换为百度地图坐标,解决地图显示经纬度的偏移问题
- java将经纬度转换为平面坐标
- baidu经纬度坐标与google经纬度坐标都转换
- baidu经纬度坐标与google经纬度坐标都转换 .
- baidu经纬度坐标与google经纬度坐标都转换 .
- baidu经纬度坐标与google经纬度坐标转换
- GPS坐标(经纬度)转换为百度坐标(经纬度)的JAVA方法
- 【百度地图API】如何将Google的经纬度批量转换为百度经纬度
- 百度地图根据地理坐标转换经纬度
- 百度地图sdk 将GPS坐标转换为百度坐标系坐标
- 性能分析系列——小命令保证大性能
- MFC圆角矩形窗口
- 从Arm汇编看Android C++虚函数实现原理
- Python 练习实例21
- 欢迎使用CSDN-markdown编辑器
- 将GPS坐标转换成百度地图坐标,将baidu 经纬度 转换为google经纬度
- git 提交代码到代码库 命令
- 切换页面隐藏导航栏出现黑条的问题
- 我仅代表还是我谨代表
- 医学图像常用特征选择方法
- qsort和sort对结构体的排序
- 【链表】单链表——带表头结点
- [转]Android调用so文件(C代码库)方法详解
- centos6.5使用ovs-dpdk