许多用户希望把Gps 的坐标转成Baidu地图的坐标,并且存在数据库里,由于百度没有提供webservice的接口,所以我只能用这种方式来解析了,废话少说,直接贴代码。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.text.ParseException;
import sun.misc.BASE64Decoder;
public class Test {
public static void main(String args[]) throws ParseException {
changgeXY("116.397428", "39.90923");
}
public static String changgeXY(String xx, String yy) {
try {
Socket s = new Socket("api.map.baidu.com", 80);
BufferedReader br = new BufferedReader(new InputStreamReader(
s.getInputStream(), "UTF-8"));
OutputStream out = s.getOutputStream();
StringBuffer sb = new StringBuffer(
"GET /ag/coord/convert?from=0&to=4");
sb.append("&x=" + xx + "&y=" + yy);
sb.append("&callback=BMap.Convertor.cbk_3976 HTTP/1.1\r\n");
sb.append("User-Agent: Java/1.6.0_20\r\n");
sb.append("Host: api.map.baidu.com:80\r\n");
sb.append("Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n");
sb.append("Connection: Close\r\n");
sb.append("\r\n");
out.write(sb.toString().getBytes());
String json = "";
String tmp = "";
while ((tmp = br.readLine()) != null) {
// System.out.println(tmp);
json += tmp;
}
int start = json.indexOf("cbk_3976");
int end = json.lastIndexOf("}");
if (start != -1 && end != -1&& json.contains("\"x\":\"")) {
json = json.substring(start, end);
String[] point = json.split(",");
String x = point[1].split(":")[1].replace("\"", "");
String y = point[2].split(":")[1].replace("\"", "");
return (new String(decode(x)) + "," + new String(decode(y)));
} else {
System.out.println("gps坐标无效!!");
}
out.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 解码
*
* @param str
* @return string
*/
public static byte[] decode(String str) {
byte[] bt = null;
try {
BASE64Decoder decoder = new BASE64Decoder();
bt = decoder.decodeBuffer(str);
// System.out.println(new String (bt));
} catch (IOException e) {
e.printStackTrace();
}
return bt;
}
}
希望对大家有帮助!
分享到:
相关推荐
GPS坐标系转换成百度坐标系 经过验证很准确 希望能给你有所帮助。
通过GPS坐标的经纬度,经计算返回一组百度坐标数据,简单方便
Gps坐标系转换Java工具类WGS坐标与Google和百度坐标互转,偏差很小,与百度Api调用转换几乎相差无几,程序为Java程序,工具类直接传经纬度调用相应转换方法即可获取转换后的返回值
此文件为纯java编写的GPS坐标转换到高德地图坐标,直接将文件添加到工程目录,调用转换函数即可,输入是double类型,输出是double数组,注意:输入输出数据的单位都是度。
gps坐标转地图坐标算法,纠偏算法。GPS坐标就是传说中大地坐标系统(WGS-84),国内的互联网公司,都不会使用GPS坐标,因为这不符合国家政策。所以大家都会使用GCJ-02坐标系,如腾讯搜搜地图、搜狐搜狗地图、阿里云...
GPS坐标与火星坐标互转JAVA版源代码!
GPS转百度坐标demo。百度地图显示的坐标是自己的坐标系统,是经过加密后的百度坐标
Java 计算两个GPS坐标点之间的距离 JAVA 计算两个经纬度关系计算 - FALCON - 斑驳的蓝调 1. Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度; 2. a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度...
一些工具类代码块的标准代码,包括但不限于: 百度坐标系(BD-09)转WGS坐标(百度坐标...GCJ02(火星坐标系)转GPS84(火星坐标系的经度,火星坐标系纬度),WGS84坐标数组 纬度转换 经度转换 判断是否在国内,不在国内不做偏移
转换方法来自于网上的一个C语言版本,我改写成java了,测试偏差不大,支持百度(bd09ll)和谷歌(gcj02)坐标互转 另附一个GPS到gcl02坐标的转换方法,不过貌似不准确 代码封装成jar了,在demo的libs目录下,希望对...
* 百度转火星 * * bd_lat * @param bd_lon * @return */ public static GPS bd09_To_Gcj02(double bd_lat, double bd_lon) { double x = bd_lon - 0.0065, y = bd_lat - 0.006; double z = Math.sqrt(x...
GCJ2000与WGS84坐标转换和GCJ2000与BD09坐标转换源码
GNSS NMEA 格式的坐标(ddmm.mmmmm)转换为原始 GPS 格式
收集的java坐标转换工具,包括WGS84、GCJ02B、BD09,及国内纠偏。 收集的java坐标转换工具,包括WGS84、GCJ02B、BD09,及国内纠偏。
Java代码,提取图片EXIF块中的GPS信息,转换为高德地图API的坐标,使用到metadata-extractor
根据已知点坐标计算附近位置,代码详细解释了三种计算策略。主要涉及日常需要解决问题,例如类似于滴滴打车实现查找附近车辆业务逻辑和贝壳找房根据指定位置筛选出附近房源,上述两场场景应用可借鉴代码中两种方法...
Android中,如何将火星坐标转换为标准的,已经讲标准的转换为火星坐标 Java语言编写,应用Android中GPS定位 略含说明文档.
转换方法来自于网上的一个C语言版本,我改写成java了,测试偏差不大,支持百度(bd09ll)和谷歌(gcj02)坐标互转,附源码
从事测量或道桥行业的人经常会遇到根据GPS大地坐标求算两点间的距离和方位角,计算并不难,只是比较繁琐。这个小工具是用EXCEL编写的,输入两点的横纵坐标及坡度,即可求出两点的距离和方位角。由于需要频繁地输入...
基于Java与Android的百度地图运动轨迹纠偏与去噪设计实现