最近的一个项目中需要将坐标值转换为地理位置显示给用户,即将:
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开发手册(规约)》。该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者、技术爱好者开放,希望帮助开发者码出高效、码出质量...
阿里巴巴编码规范试题答案 一、Java多线程编程 1. Java中的定时任务可以使用哪些方式实现?(BCDA) 答案:Java中的定时任务可以使用Timer、ScheduledExecutorService、TimerTask等方式实现。Timer可以实现简单的...
该插件名为"Alibaba Java Coding Guidelines",版本为1.0.5,旨在帮助开发人员在使用IntelliJ IDEA或Android Studio等集成开发环境(IDE)时,自动检查并提示代码是否符合阿里巴巴的编码规范。 阿里巴巴作为全球...
本资源包含三份关键文档:阿里Android开发手册、阿里Java开发规范以及Alibaba Java Coding Guidelines的插件,旨在帮助开发者遵循阿里巴巴的编码标准。 1. **阿里Android开发手册**: 这份手册详细阐述了Android...
《阿里巴巴Android开发手册》是Android开发者们不可或缺的参考资料,它由阿里巴巴集团精心编撰,旨在为开发者提供一套完整的Android开发规范和技术指南。手册涵盖了从基础编程到高级优化的多个方面,帮助开发者提升...
《阿里巴巴Android开发手册》是Android开发者们不可或缺的参考资料,它汇集了阿里巴巴集团在Android开发领域的最佳实践和规范,旨在提升代码质量、优化开发流程、确保软件稳定性和性能。本手册覆盖了从编码风格、...
阿里Android规范是一套由阿里巴巴集团推出的针对Android应用开发的详细指南,旨在提升代码质量、提高开发效率、确保软件稳定性及可维护性。这份规范涵盖了编码风格、项目结构、设计模式、性能优化、测试策略等多个...
《阿里巴巴Android开发手册》是阿里巴巴集团为Android开发者制定的一套规范和最佳实践,旨在提高代码质量和团队协作效率。这份手册涵盖了编码规约、异常处理、性能优化、安全指南等多个方面,是Android开发者不可或...
阿里云直播Android播放器Demo是一个专为开发者设计的示例项目,它展示了如何在Android平台上集成和使用阿里云的直播播放器技术。这个Demo对于初次接触阿里直播服务的开发者来说非常有帮助,因为它提供了基本的播放、...
这里我们以“Android实现阿里OCR通用类文字识别Demo”为例,详细讲解这个过程。 首先,我们需要理解OCR(Optical Character Recognition,光学字符识别)技术,它是将图像中的文字转换为机器编码文本的过程。阿里云...
《阿里巴巴Android开发手册》是Android开发者们不可或缺的参考资料,它由阿里巴巴集团的移动开发团队精心编纂,旨在规范和提升Android应用的开发质量和效率。这份手册涵盖了从编码规范、项目结构到性能优化等多个...
《阿里巴巴Android开发手册》是Android开发者的一份重要参考资料,它由阿里巴巴集团的移动开发团队精心编纂,旨在帮助开发者遵循最佳实践,提升代码质量和应用程序性能。这份手册详细涵盖了Android开发的多个方面,...
### Android开发编码规范 #### 1. 引言 ##### 1.1 目的 本文档旨在为Android开发人员提供一套系统化的编码规范指南,帮助团队统一代码风格,提高代码质量和可维护性。通过遵循这些规则,可以有效减少代码中的潜在...
在Android开发中,集成阿里云短信服务是一种常见的需求,用于实现验证码发送、通知推送等功能。本文将详细解析“Android环境下阿里短信Demo”的实现过程及关键知识点。 首先,我们需要理解接入阿里短信服务的基本...
《阿里巴巴Android开发规范手册》是阿里巴巴集团为Android开发者提供的一份详尽的开发指南,旨在提升团队协作效率,保证代码质量,以及优化软件性能。这份规范涵盖了从编码风格、命名规则到项目结构、异常处理等多个...
《阿里Android开发手册》是阿里巴巴集团为Android开发者提供的一份详尽且实用的开发指南,旨在提升开发效率、代码质量和团队协作能力。这份手册涵盖了Android应用开发的各个方面,包括编码规范、性能优化、稳定性...
2. Android编码规范:包括命名规则、注释规范、代码结构等,旨在提升代码的可维护性和团队协作效率。 二、架构设计 1. MVP与MVVM:手册探讨了Model-View-Presenter(MVP)和Model-View-ViewModel(MVVM)两种主流...
《阿里巴巴Android开发手册》是一本深受开发者欢迎的指南,它为Android应用开发提供了一套全面且严谨的编码规范。这份高清版本带有书签,便于读者快速定位和查阅,尤其适合初学者和有经验的开发者用来提升开发质量和...
阿里Android和Java规范是软件开发领域中的重要指南,旨在提高代码质量、提升团队协作效率以及维护项目的可持续性。这两份规范分别针对Android应用开发和Java后端开发,为开发者提供了详细的编码、设计、测试和文档...