`
liuxing87327
  • 浏览: 82152 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

谷歌地图坐标转换百度地图坐标

 
阅读更多

 功能代码

httpclient方式请求百度的转换地址

http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=&y=

拿到的是转换后的json数据,但是坐标值是base64加密过的字符,需要解密一下

 

import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;

public class BaiduMapUtils {
	
	public static final String googleToBaiduUrl = "http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=#x#&y=#y#";
	
	public static String httpClientForGet(String url){
		HttpClient client = new HttpClient();
		GetMethod getMethod = new GetMethod(url);
		getMethod.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"); 
		
		try {
			client.executeMethod(getMethod);
			if (getMethod.getStatusCode() == HttpStatus.SC_OK) {
				return getMethod.getResponseBodyAsString();
			}
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			getMethod.releaseConnection();
		}
		return "";
	}
	
	/**
	 * 转换谷歌为百度坐标
	 * @param x 经度
	 * @param y	纬度
	 * @return 获取转换过的百度坐标
	 */
	public static Map<String, Object> googleToBaidu(Double x, Double y){
		Map<String, Object> map = new HashMap<String, Object>();
		
		String relt = httpClientForGet(getGoogleToBaiduUrl(String.valueOf(x), String.valueOf(y)));
		if(DyString.isNotEmpty(relt))
			map = JsonUtils.parserToMap(relt);
		
		map.put("x", Base64Utils.decode(map.get("x")));
		map.put("y", Base64Utils.decode(map.get("y")));
		
		return map;
	}
	
	/**
	 * 获取请求地址
	 * 
	 * @param x
	 * @param y
	 * @return
	 */
	public static String getGoogleToBaiduUrl(String x, String y){
		return googleToBaiduUrl.replace("#x#", x).replace("#y#", y);
	}
	
	/**
	 * URL中文字符编码
	 * @param url
	 * @return
	 */
	public static String encode(String s){
		return URLEncoder.encode(s);
	}
	
	public static void main(String[] args) {
		System.out.println(googleToBaidu(31.2306192233586, 121.446663737297));
	}
}

 

 

Base64Utils代码

 

使用apache的commons包下面的base64工具类

 

 

package com.dooioo.common.utils;

import org.apache.commons.codec.binary.Base64;

/**
 * base64加密解密工具 使用apache工具包
 * 
 * @author 刘兴
 * 
 */
public class Base64Utils {

	/**
	 * base64加密字符串
	 * 
	 * @param s
	 * @return
	 */
	public static String encode(Object s) {
		if (s == null)
			return null;
		Base64 base64 = new Base64();
		byte[] enbytes = base64.encode(String.valueOf(s).getBytes());
		return new String(enbytes);
	}

	/**
	 * base64解密字符串
	 * 
	 * @param s
	 * @return
	 */
	public static String decode(Object s) {
		if (s == null)
			return null;
		Base64 base64 = new Base64();
		byte[] debytes = base64.decode(String.valueOf(s).getBytes());
		return new String(debytes);
	}

	public static void main(String[] a) {
		System.out.println(Base64Utils.decode("MTE2LjI2MTA5OTEyMjE="));
	}
}

 


 

DyString类是一个自定义的字符串处理工具类,可以调用apache的工具类StringUtils.isEmpty或isNotEmpty

JsonUtils类是自定义的json字符串处理工具类,内部功能是将json字符串转换成map对象

分享到:
评论

相关推荐

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

    2. `googleToWgs84(x, y)`: 将Google地图坐标转换回WGS84坐标。这个过程是前一步的逆运算,需要对Mercator投影进行反解。 3. `wgs84ToBaidu(lat, lon)`: 将WGS84坐标转换为百度地图的BD-09坐标。百度坐标系的转换...

    百度地图坐标拾取器(可转换为高德坐标)

    这里我们关注的是一个名为“百度地图坐标拾取器”的工具,该工具能够帮助用户方便地获取百度地图上的坐标,并将其转换为高德地图的坐标系统。 首先,我们要了解的是百度地图和高德地图分别采用的坐标系统。百度地图...

    百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换纠偏的JS实现

    3. **JS实现**:JavaScript是Web前端的主要编程语言,实现地图坐标转换意味着可以在浏览器端直接进行计算,无需服务器端支持,提高了应用的响应速度和用户体验。 4. **shujvpianyi.js**:这个文件很可能是实现上述...

    百度坐标与google坐标之间的相互转换

    百度坐标与google坐标之间的相互转换,google坐标与google坐标之间的相互转换。

    谷歌转百度坐标例程及坐标距离计算

    1. 谷歌地图坐标系统:主要使用WGS84坐标系,这是一个全球通用的大地坐标系统,基于地球椭球体模型,适用于全球范围内的定位和导航。 2. 百度地图坐标系统:采用的是自定义的BD-09坐标系,它是在WGS84基础上进行了...

    百度地图极速版 坐标转换

    百度地图极速版开发中使用的坐标转换js文件。 type取值如下: 1:GPS设备获取的角度坐标,wgs84坐标; 2:GPS获取的米制坐标、sogou地图所用坐标; 3:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用...

    各地图API坐标系统比较与转换(WGS84坐标系、火星坐标系、百度坐标系、搜狗坐标系、图吧坐标系)

    * 谷歌地图采用的是WGS84地理坐标系(中国范围除外); * GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 * 谷歌中国地图和搜搜中国地图采用的...

    GPSUtil.zip_火星坐标_百度坐标_百度坐标相互转换_谷歌坐标

    例如,如果你从一个使用火星坐标的系统获取数据,然后要在百度地图上显示,就必须将火星坐标转换为百度坐标。反之,如果你的数据是在百度地图上获取的,要用于其他系统,也需要将百度坐标转换回火星坐标。这种转换...

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

    本文主要聚焦于Android系统中如何将GPS获取的坐标转换为适用于高德地图的坐标。 首先,我们需要理解不同坐标系统的概念。GPS坐标通常基于WGS84(World Geodetic System 1984)标准,这是一种全球通用的地理坐标系统...

    Vue+Element+Javascript完成坐标转化

    3. **地图API集成**:可能集成了如Google Maps API、高德地图API或百度地图API,获取地图服务并展示坐标。 4. **坐标转换算法**:JavaScript实现坐标转换算法,如proj4js库可以方便地进行坐标投影转换。 5. **数据...

    Python-用于百度坐标系谷歌高德坐标系WGS84坐标系之间的相互转换

    了解这些转换方法后,开发者可以轻松地在不同坐标系之间进行数据交换,比如从百度地图获取的坐标转换成谷歌地图或高德地图可以识别的格式,反之亦然。在使用过程中需要注意的是,由于这些坐标系都是针对地理位置的,...

    SuperMap iDesktop 7C 百度坐标转换

    该插件用于将常用的非百度坐标(目前支持GPS设备获取的坐标、google地图坐标、soso地图坐标、amap地图坐标、mapbar地图坐标)转换成百度地图中使用的坐标,目前支持数据集批量转换和单点数据转换。

    百度地图和谷歌地图互转

    1. **坐标转换**:在进行百度地图和谷歌地图互转时,首要步骤是进行坐标转换。百度地图到谷歌地图的转换通常需要一个转换公式,这个公式可以基于已知的转换参数(如偏移量)来调整坐标值。反之,从谷歌地图到百度...

    百度地图坐标转WGS地图坐标

    当我们需要将百度地图上的坐标数据转换为WGS-84坐标,以便与其他系统(如GPS设备或Google Maps)兼容时,就需要进行坐标转换。本篇将详细介绍如何使用Python进行这种转换,并涉及`bdtowgs.py`这个文件。 首先,`...

    WGS-84(gps)世界标准坐标、GCJ-02中国国测局(火星坐标)、Google地图坐标、高德地图坐标、BD-09百度地图坐标系相互转换

    地图坐标大致分为几种: 1、GPS、WGS84,也就是原始坐标体系,这是国际公认的世界标准坐标体系; 2、GCJ-02,又称为“火星坐标”,国家测绘局在02年发布的坐标体系,在国内,至少得使用此坐标体系,比如:google、...

    百度地图(BD09)、谷歌地图(GCJ02)、谷歌地球(WGS84)三者坐标系之间互转

    主要实现了百度地图(BD09)、谷歌地图(GCJ02)、谷歌地球(WGS84)三者坐标系之间互转。懂的人应该就懂了,不懂的就再说明一句。谷歌地图相当于火星坐标系,也就是高德、腾讯坐标系。是个Util,拿去按需调用即可。

    cj_wg_地图_高德_谷歌_坐标系_百度_

    2. **谷歌地图坐标系** 谷歌地图使用的是Web Mercator投影,这是一种横轴墨卡托投影,广泛应用于在线地图服务,因为它的形状和面积变形较小,适合大比例尺的全球展示。WGS84是其参考椭球体。 3. **高德地图坐标系*...

    iOS地图坐标系转换

    分为 地球坐标,火星坐标(iOS mapView 高德 , 国内google ,搜搜、阿里云 都是火星坐标),百度坐标(百度地图数据主要都是四维图新提供的) 火星坐标: MKMapView 地球坐标: CLLocationManager 当用到...

Global site tag (gtag.js) - Google Analytics