`
radio123
  • 浏览: 205211 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

把Gps坐标转成百度坐标的java方法

阅读更多

  许多用户希望把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;
	}

}
 

 

 希望对大家有帮助!

0
2
分享到:
评论
1 楼 evianwu 2015-01-23  
写的不错,谢啦,,,,主要用来转换微信中获取的坐标,看情况微信中的应该是gps坐标

相关推荐

    GPS坐标转百度坐标java算法

    通过GPS坐标的经纬度,经计算返回一组百度坐标数据,简单方便

    java GPS坐标系转百度坐标系

    GPS坐标系转换成百度坐标系 经过验证很准确 希望能给你有所帮助。

    Gps坐标系转换Java工具类WGS坐标与Google和百度坐标互转

    本文将详细介绍如何使用Java实现WGS84坐标与Google地图坐标、百度地图坐标之间的转换,并且会探讨相关的理论背景以及如何在实际项目中应用这些工具类。 首先,WGS84(World Geodetic System 1984)是一种全球通用的...

    GPSConvertBaiDu_java_GPS转百度_DEMO_百度坐标_

    由于百度地图采用的是自有的加密坐标体系,因此在使用百度地图服务时,需要对原始GPS坐标进行转换。 首先,我们需要理解GPS坐标系统。GPS坐标基于全球大地坐标系WGS84,由经度、纬度和海拔高度组成。这是国际通用的...

    GPS坐标与火星坐标互转JAVA版源代码

    1. `GPS2火星(GPS坐标)`:此方法接收一个GPS坐标对象(包含经度和纬度),并返回相应的火星坐标对象。 2. `火星2GPS(火星坐标)`:此方法接收一个火星坐标对象,返回对应的GPS坐标对象。 源代码可能会包含一些关键的...

    java版GPS坐标转换为高德地图坐标

    此文件为纯java编写的GPS坐标转换到高德地图坐标,直接将文件添加到工程目录,调用转换函数即可,输入是double类型,输出是double数组,注意:输入输出数据的单位都是度。

    GPS转百度坐标demo、

    描述中提到的具体转换代码可能是一个Java或Kotlin函数,用于将GPS坐标解密并调整到百度坐标系统。转换算法可能包括一些固定的偏移值和特定的数学公式,比如Helmert变换或者Mercator投影等。 标签“android gps”...

    Java实现常见坐标系(百度,高德,WGS84)转墨卡托坐标系(可直接运行).zip

    本项目提供了一个Java实现的工具,用于将常见的坐标系,包括百度坐标系(BD-09)、高德坐标系(GCJ-02)以及WGS84经纬度坐标,转换为广泛使用的墨卡托坐标系。以下将详细阐述这些坐标系以及转换过程中的关键知识点。...

    GPS坐标转地图坐标java版算法(纠偏)

    gps坐标转地图坐标算法,纠偏算法。GPS坐标就是传说中大地坐标系统(WGS-84),国内的互联网公司,都不会使用GPS坐标,因为这不符合国家政策。所以大家都会使用GCJ-02坐标系,如腾讯搜搜地图、搜狐搜狗地图、阿里云...

    火星百度坐标转WGS84坐标小工具

    "火星百度坐标转WGS84坐标小工具"是一个专为解决中国地区坐标转换问题而设计的实用程序。在本篇文章中,我们将深入探讨这个工具的工作原理、涉及的技术以及其在实际应用中的重要性。 首先,我们来了解一下标题中的...

    高德、百度坐标系转天地图坐标系

    本篇文章将详细阐述高德、百度坐标系与天地图坐标系之间的转换方法,并探讨这种转换的重要性。 首先,我们要理解坐标系的基本概念。在地理信息系统中,坐标系是用于定义地球上任何位置的数学框架。常见的全球坐标系...

    java wgs84坐标转换成北京54坐标

    自己写的wgs84坐标转成北京54坐标,java源码,本人已经测试过,能用,首先要找一个坐标软件求得七参(随便一个坐标软件都行),然后再用此源码进行坐标转换,

    Android GPS转百度坐标demo.zip

    而百度地图则使用自己的坐标系,这被称为百度墨卡托坐标,是为了保护用户隐私而进行的一种加密处理,使得原始的GPS坐标无法直接在百度地图上准确展示。 转换过程通常分为两个步骤: 1. **GPS坐标到GCJ-02坐标**:...

    百度坐标、高得坐标、WGS84坐标转换 js java C#

    在标题提到的"百度坐标、高得坐标、WGS84坐标转换 js java C#"中,涉及到了三种常用的坐标系统:百度坐标(BD-09)、高德坐标(GCJ-02)以及全球广泛使用的WGS84坐标系统。这些坐标系统之间的转换对于地图应用、定位...

    WGS-84大地坐标转北京-54坐标java源代码;七参数、四参数;坐标转换

    1. **WGS-84坐标系**:这是全球广泛使用的地球坐标系,基于地球的平均几何形状(椭球体)来定义地理位置,常用于GPS系统。它的原点是地球质心,Z轴指向地球极轴,X轴通过格林尼治天文台,Y轴遵循右手规则确定。 2. ...

    Android中GPS坐标转换为高德地图坐标详解

    通过调用`from()`方法设置源坐标类型,然后使用`coord()`方法传入GPS坐标,最后通过`convert()`方法完成转换。以下是一个示例代码: ```java public AMapLocation fromGpsToAmap(Location location) { ...

    java实现火星坐标系与84坐标系之转化

    WGS-84是一种全球广泛使用的地球参考坐标系统,是GPS(全球定位系统)和其他许多导航系统的基础。 首先,我们来理解一下两个坐标系的基本概念: 1. **WGS-84坐标系**:这是一个国际标准的地理坐标系统,以地球椭...

    收集的java坐标转换WGS84、GCJ02B、BD09及纠偏

    3. **BD-09(百度坐标)**:这是百度地图使用的坐标系统,基于GCJ-02坐标系,进一步增加了偏移量,以保护用户隐私并提供更精确的服务。 **坐标纠偏**通常是指在从GPS设备获取到原始WGS84坐标后,将其转换为GCJ-02或...

    Java提取图片中的GPS信息,转化为高德地图坐标

    Java代码,提取图片EXIF块中的GPS信息,转换为高德地图API的坐标,使用到metadata-extractor

    BD09 坐标 WGS84 坐标 GCJ02 坐标的相互转换

    1. **WGS84坐标系统**:全球定位系统(GPS)采用的标准坐标系统,是国际地球参考框架,以地球质心为原点,以地球椭球体的长半轴为X轴,赤道面与X轴的交点为Y轴,地轴为Z轴。它是一个全球性的大地坐标系统,广泛用于...

Global site tag (gtag.js) - Google Analytics