`

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开发手册(规约)》。该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者、技术爱好者开放,希望帮助开发者码出高效、码出质量...

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

    阿里巴巴编码规范试题答案 一、Java多线程编程 1. Java中的定时任务可以使用哪些方式实现?(BCDA) 答案:Java中的定时任务可以使用Timer、ScheduledExecutorService、TimerTask等方式实现。Timer可以实现简单的...

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

    该插件名为"Alibaba Java Coding Guidelines",版本为1.0.5,旨在帮助开发人员在使用IntelliJ IDEA或Android Studio等集成开发环境(IDE)时,自动检查并提示代码是否符合阿里巴巴的编码规范。 阿里巴巴作为全球...

    Android Studio 阿里java代码规范化插件与开发手册、android开发手册

    本资源包含三份关键文档:阿里Android开发手册、阿里Java开发规范以及Alibaba Java Coding Guidelines的插件,旨在帮助开发者遵循阿里巴巴的编码标准。 1. **阿里Android开发手册**: 这份手册详细阐述了Android...

    阿里Android开发手册.pdf

    《阿里巴巴Android开发手册》是Android开发者们不可或缺的参考资料,它由阿里巴巴集团精心编撰,旨在为开发者提供一套完整的Android开发规范和技术指南。手册涵盖了从基础编程到高级优化的多个方面,帮助开发者提升...

    阿里Android开发手册最新版

    《阿里巴巴Android开发手册》是Android开发者们不可或缺的参考资料,它汇集了阿里巴巴集团在Android开发领域的最佳实践和规范,旨在提升代码质量、优化开发流程、确保软件稳定性和性能。本手册覆盖了从编码风格、...

    阿里Android规范

    阿里Android规范是一套由阿里巴巴集团推出的针对Android应用开发的详细指南,旨在提升代码质量、提高开发效率、确保软件稳定性及可维护性。这份规范涵盖了编码风格、项目结构、设计模式、性能优化、测试策略等多个...

    阿里巴巴Android开发手册 (规约)

    《阿里巴巴Android开发手册》是阿里巴巴集团为Android开发者制定的一套规范和最佳实践,旨在提高代码质量和团队协作效率。这份手册涵盖了编码规约、异常处理、性能优化、安全指南等多个方面,是Android开发者不可或...

    阿里云直播Android播放器demo

    阿里云直播Android播放器Demo是一个专为开发者设计的示例项目,它展示了如何在Android平台上集成和使用阿里云的直播播放器技术。这个Demo对于初次接触阿里直播服务的开发者来说非常有帮助,因为它提供了基本的播放、...

    Android实现阿里OCR通用类文字识别Demo

    这里我们以“Android实现阿里OCR通用类文字识别Demo”为例,详细讲解这个过程。 首先,我们需要理解OCR(Optical Character Recognition,光学字符识别)技术,它是将图像中的文字转换为机器编码文本的过程。阿里云...

    阿里巴巴Android开发手册.pdf

    《阿里巴巴Android开发手册》是Android开发者们不可或缺的参考资料,它由阿里巴巴集团的移动开发团队精心编纂,旨在规范和提升Android应用的开发质量和效率。这份手册涵盖了从编码规范、项目结构到性能优化等多个...

    阿里巴巴Android开发手册

    《阿里巴巴Android开发手册》是Android开发者的一份重要参考资料,它由阿里巴巴集团的移动开发团队精心编纂,旨在帮助开发者遵循最佳实践,提升代码质量和应用程序性能。这份手册详细涵盖了Android开发的多个方面,...

    Android开发编码规范

    ### Android开发编码规范 #### 1. 引言 ##### 1.1 目的 本文档旨在为Android开发人员提供一套系统化的编码规范指南,帮助团队统一代码风格,提高代码质量和可维护性。通过遵循这些规则,可以有效减少代码中的潜在...

    Android环境下阿里短信Demo

    在Android开发中,集成阿里云短信服务是一种常见的需求,用于实现验证码发送、通知推送等功能。本文将详细解析“Android环境下阿里短信Demo”的实现过程及关键知识点。 首先,我们需要理解接入阿里短信服务的基本...

    阿里巴巴Android开发规范手册

    《阿里巴巴Android开发规范手册》是阿里巴巴集团为Android开发者提供的一份详尽的开发指南,旨在提升团队协作效率,保证代码质量,以及优化软件性能。这份规范涵盖了从编码风格、命名规则到项目结构、异常处理等多个...

    阿里Android开发手册

    《阿里Android开发手册》是阿里巴巴集团为Android开发者提供的一份详尽且实用的开发指南,旨在提升开发效率、代码质量和团队协作能力。这份手册涵盖了Android应用开发的各个方面,包括编码规范、性能优化、稳定性...

    阿里巴巴Android开发手册1.0.pdf

    2. Android编码规范:包括命名规则、注释规范、代码结构等,旨在提升代码的可维护性和团队协作效率。 二、架构设计 1. MVP与MVVM:手册探讨了Model-View-Presenter(MVP)和Model-View-ViewModel(MVVM)两种主流...

    阿里巴巴Android开发手册 高清 带书签

    《阿里巴巴Android开发手册》是一本深受开发者欢迎的指南,它为Android应用开发提供了一套全面且严谨的编码规范。这份高清版本带有书签,便于读者快速定位和查阅,尤其适合初学者和有经验的开发者用来提升开发质量和...

    阿里Android+Java规范

    阿里Android和Java规范是软件开发领域中的重要指南,旨在提高代码质量、提升团队协作效率以及维护项目的可持续性。这两份规范分别针对Android应用开发和Java后端开发,为开发者提供了详细的编码、设计、测试和文档...

Global site tag (gtag.js) - Google Analytics