`

Android 地理编码&逆地理编码(百度、阿里接口对比)

 
阅读更多
最近的一个项目中需要将坐标值转换为地理位置显示给用户,即将:
113.952078,22.562627

转换为:深圳市南山区科苑北路


目前网上提供这种功能接口的有:
一、百度“车联网API”
官方地址:http://developer.baidu.com/map/wiki/index.php?title=car/api/anti-geocoding

参考示例:
http://api.map.baidu.com/telematics/v3/reverseGeocoding?location=116.3017193083,40.050743859593&coord_type=gcj02&ak=E4805d16520de693a3fe707cdc962045

需要注册并获取开发者密钥(ak);
引用
每个Key限制5000次/天。若需升级访问次数,请发送邮件。

如果你再使用车联网里面的天气等,每次请求都需要计算次数,这样算下来,如果你的用户一天使用5次,那么只能容纳1000用户,这肯定是不行的。办法就是跟官方合作,发邮件吧!




二、阿里云
http://gc.ditu.aliyun.com/regeocoding?l=39.938133,116.395739&type=001

这个地址是阿里云地图提供的,无需注册,无访问次数限制,推荐!!!

使用样例:
public static void testUrlRes(String lat, String lng) throws IOException {
		// type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项)
		String path = "http://gc.ditu.aliyun.com/regeocoding?l=" + lat + ","
				+ lng + "&type=100";
		// 参数直接加载url后面
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setRequestProperty("contentType", "GBK");
		conn.setRequestMethod("GET");
		conn.setConnectTimeout(5000);
		if (conn.getResponseCode() == 200) { // 200表示请求成功
			InputStream is = conn.getInputStream(); // 以输入流的形式返回
			// 将输入流转换成字符串
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			byte[] buffer = new byte[1024];
			int len = 0;
			while ((len = is.read(buffer)) != -1) {
				baos.write(buffer, 0, len);
			}

			if (baos.size() < 1) {
				System.out.println("坐标请求异常.");
				return;
			}
			// 得出整个坐标反馈信息
			String jsonString = baos.toString();
			System.out.println("jsonString:"+jsonString);

			baos.close();
			is.close();
			// 转换成json数据处理
			// {"queryLocation":[39.938133,116.395739],"addrList":[{"type":"doorPlate","status":1,"name":"地安门外大街万年胡同1号","admCode":"110102","admName":"北京市,北京市,西城区,","addr":"","nearestPoint":[116.39546,39.93850],"distance":45.804}]}
		}

	}


三、高德
高德被阿里收购之后已经是一家了,后面肯定会以这个接口为准,上面阿里地图的那个地图后期估计会无法使用;
官方地址:http://lbs.amap.com/api/android-sdk/guide/geocode/
需要注册并获取key,其他没什么集成难度,按照说明文档进行即可;


最后提供一个联网获取json数据的方法:
	public static String getJsonContent() {
		String urlString = "";
		try {
			urlString = URL + "&location="+"&ak=" + APP_KEY;
		} catch (Exception e1) {
			e1.printStackTrace();
		}

		try {// 获取HttpURLConnection连接对象
			URL url = new URL(urlString);
			HttpURLConnection httpConn = (HttpURLConnection) url
					.openConnection();
			// 设置连接属性
			httpConn.setConnectTimeout(8000);
			httpConn.setDoInput(true);
			httpConn.setRequestMethod("GET");
			// 获取相应码
			int respCode = httpConn.getResponseCode();
			if (respCode == 200) {
				return ConvertStream2Json(httpConn.getInputStream());
			}
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";
	}

	private static String ConvertStream2Json(InputStream inputStream) {
		String jsonStr = "";
		// ByteArrayOutputStream相当于内存输出流
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024];
		int len = 0;
		// 将输入流转移到内存输出流中
		try {
			while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
				out.write(buffer, 0, len);
			}
			// 将内存流转换为字符串
			jsonStr = new String(out.toByteArray());
		} catch (IOException e) {
			e.printStackTrace();
		}
		return jsonStr;
	}
  • 大小: 47.7 KB
分享到:
评论

相关推荐

    阿里巴巴Android编码规范

    阿里巴巴于近日为广大程序员再送上重磅开春好礼:《阿里巴巴Android开发手册(规约)》。该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者、技术爱好者开放,希望帮助开发者码出高效、码出质量...

    阿里巴巴编码规范试题答案

    阿里巴巴编码规范试题答案

    阿里巴巴编码规范AS工具插件

    压缩包包含: 1、阿里巴巴编码规范插件Alibaba Java Coding Guidelines-1.0.5.zip 2、使用说明, 最新插件下载官网 3、插件源码

    Android开发编码规范

    该文档是《阿里巴巴Java开发手册》的规约条目的延伸信息; 其中包含了对内容的适当扩展和解释。它提供了编码和实现方式的正例,以及需要提防的雷区和错误案例的反例。该文档面向Android开发所有成员,旨在规范化代码...

    阿里Android规范

    阿里Android规范,最新版。。。。。。。。。。。。。。。。。。

    阿里巴巴Android开发手册(20180228)

    本手册(规约)以开发者为中心视角分为Java语言规范(遵循《阿里巴巴Java开发手册(规约)》),Android资源文件命名与使用,Android基本组件,UI与布局,进程、线程与消息通信,文件与数据库,Bitmap、Drawable与动画,...

    阿里巴巴 Android 开发手册

    代码是一个程序猿的门面,有门面的程序猿才是一个好程序猿。 本文选自阿里巴巴开发手册,本手册以开发者为中心视角...“正例”提倡什么样的编码和实现方式;“反例”说明需要提防的雷区,以及错误案例。 手册见附件。

    阿里巴巴安卓开发规范

    阿里巴巴安卓开发规范,

    阿里巴巴Java代码规范PDF.zip

    阿里巴巴Java代码规范

    阿里Android_v9开发手册

    以开发者为中心视角分为Java语言规范,Android 资源文件命名与使用,Android 基本组件,UI 与布局,进程、线程与消息通信, 文件与数据库,Bitmap、Drawable 与动画,安全,其他等九大部分,根据约束力强弱, 规约...

    Android Studio实现音乐播放器2.0,全面优化升级!

    原先版本我们称之为音乐1.0,更新版本称之为音乐2.0。...11.新增了详细注释,优化了编码风格,遵循阿里巴巴Android开发手册 详情直接看博客:https://blog.csdn.net/qq_42257666/article/details/118637475

    Android-Video-Trimmer-master.zip

    MediaRecorder:是Android系统直接提供给我们的录制类,用于录制音频和视频的一个类,简单方便,不需要理会中间录制过程,结束录制后可以直接得到音频文件进行播放,录制的音频文件是经过压缩的,需要设置编码器,...

    全国城市列表数据

    全国城市列表,详细!android直接调用的xml城市列表数据!

    阿里java开发手册

    阿里JAVA开发手册-较详细的介绍各种编码规范等明细内容

    阿里的Atlas组件化框架

    Atlas是一个Android客户端容器框架,主要提供了组件化、动态性、解耦化的支持,支持在编码期、Apk运行期以及后续运维修复期的各种问题。Atlas目前支持的主要功能有: - 在工程期,实现工程独立开发,调试功能,...

    java版商城源码下载-AndroidDevelopmentSpecification::flexed_biceps:Android开发规范让代码更干净、更高效、更好维护

    Code》,阿里开发规范凝聚而成。如有更好建议,欢迎到 GitHub 提 issue。此规范仅限于 Android 基本规范,如想要查阅更详细的规范,请查看我的另外一篇文章原文地址和源码: 和 2 Android Studio 规范 编码统一使用 ...

    Android中热修复框架Robust原理解析+并将框架代码从”闭源”变成”开源”(上篇)

    Android中热修复框架比较多,每家公司都有对应的方案和框架,比如阿里的AndFix框架,关于这个框架在之前的文章已经详细讲解了,不了解的同学可以点击这里:AndFix热修复框架原理分析。本文继续来看另外一个热修复...

    从程序员到CTO大牛企业内部PDF与PPT合集.zip

    百度基于Druid的大数据采集即计算实践 蘑菇街大数据平台工作流调度系统 饿了么离线大数据平台实践 爱奇艺广告大数据实践 魅族Android多分支代码自动同步 闲鱼2亿用户架构实践 美团配送移动网关建设实战 京东图片系统...

    消息聊天系统MySQL表设计-消息系统数据库设计.pdf

    `user_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '⽤户ID', `client_id` varchar(50) NOT NULL COMMENT '客户端ID', `alias_id` varchar(50) NOT NULL COMMENT '别名ID', `device_type` enum('IOS','Android') ...

Global site tag (gtag.js) - Google Analytics