android通过经纬度获取地址,Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法...
本文实例讲述了Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法。分享给大家供大家参考,具体如下:
第一步:根据指定的URL从google 服务器上获得包含地址的json格式的数据(其还提供xml格式的,但json解析效率比xml高)
private static StringBuffer getJSONData(String urlPath){
try {
URL url = new URL(urlPath);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setReadTimeout(5000);
httpURLConnection.setRequestMethod("GET");
if(httpURLConnection.getResponseCode() == 200){
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(isr);
String temp = null;
StringBuffer jsonsb = new StringBuffer();
while((temp = br.readLine()) != null){
jsonsb.append(temp);
}
return jsonsb;
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
传入经纬度作为参数
/**
* 根据经纬度获得地址
* @param latitude
* @param longitude
* @return
*/
public static StringBuffer getCurrentAddressByGPS(long latitude,long longitude){
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(GOOGLE_GPS_PREFIX).append(latitude).append(",")
.append(longitude).append(GOOGLE_GPS_SUFFIX);
return getJSONData(stringBuffer.toString());
}
第三,解析json数据:
public static boolean parseAddressJSON(StringBuffer sb){
try {
if(sb != null){
JSONObject jsonAllData = new JSONObject(sb.toString());
/**
* 获得一个长度为1的JSON数组,如:[{数据内容}]
*/
String placemarkStr = jsonAllData.getString("Placemark");
/**
* 将placemarkStr数组类型字符串构造成一个JSONArray对象
*/
JSONArray placemarkArray = new JSONArray(placemarkStr);
/**
* Placemark标签内容是一个长度为1的数组,获得数组的内容并转换成字符串
*/
String jsonDataPlacemarkStr = placemarkArray.get(0).toString();
/**
* 对上面得到的JSON数据类型的字符串(jsonDataPlacemarkStr)进行解析
*/
JSONObject jsonDataPlacemark = new JSONObject(jsonDataPlacemarkStr);
/**
* 获得标签AddressDetails的JSON数据
*/
String jsonAddressDetails = jsonDataPlacemark.getString("AddressDetails");
/**
* 对上面得到的JSON数据类型的字符串(jsonAddressDetails)进行解析
*/
JSONObject jsonDataAddressJDetails = new JSONObject(jsonAddressDetails);
/**
* 获得标签Country的JSON数据
*/
String jsonCountry = jsonDataAddressJDetails.getString("Country");
/**
* 对上面得到的JSON数据类型的字符串(jsonCountry)进行解析
*/
JSONObject jsonDataCountry = new JSONObject(jsonCountry);
/**
* 对解析出来的感兴趣的数据进行封装
*/
LewatekGPSAddress lewatekGPSAddress = new LewatekGPSAddress();
/**
* 设置CountryName
*/
lewatekGPSAddress.setCountryName(jsonDataCountry.getString("CountryName"));
/**
* 设置CountryNameCode
*/
lewatekGPSAddress.setCountryNameCode(jsonDataCountry.getString("CountryNameCode"));
/**
* 获得标签AdministrativeArea的JSON数据
*/
String jsonAdministrativeArea = jsonDataCountry.getString("AdministrativeArea");
/**
* 对上面得到的JSON数据类型的字符串(jsonAdministrativeArea)进行解析
*/
JSONObject jsonDataAdministrativeArea = new JSONObject(jsonAdministrativeArea);
/**
* 设置AdministrativeAreaName
*/
lewatekGPSAddress.setAdministrativeAreaName(jsonDataAdministrativeArea.getString("AdministrativeAreaName"));
/**
* 获得标签Locality的JSON数据
*/
String jsonLocality = jsonDataAdministrativeArea.getString("Locality");
/**
* 对上面得到的JSON数据类型的字符串(jsonLocality)进行解析
*/
JSONObject jsonDataLocality = new JSONObject(jsonLocality);
/**
* 设置LocalityName
*/
lewatekGPSAddress.setLocalityName(jsonDataLocality.getString("LocalityName"));
/**
* 获得标签DependentLocality的JSON数据
*/
String jsonDependentLocality = jsonDataLocality.getString("DependentLocality");
/**
* 对上面得到的JSON数据类型的字符串(jsonDependentLocality)进行解析
*/
JSONObject jsonDataDependentLocality = new JSONObject(jsonDependentLocality);
lewatekGPSAddress.setDependentLocalityName(jsonDataDependentLocality.getString("DependentLocalityName"));
Log.e(TAG,lewatekGPSAddress.toString());
return true;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
从google服务器上获得的json数据(提取对我有用的数据:CountryName、LocalityName、AdministrativeAreaName、DependentLocalityName,即中国上海市上海市浦东新区(中国湖南省衡阳市衡山县这样的数据也能提取)):
{
"name": "31.20322202833381,121.59876351250254","Status": {
"code": 200,"request": "geocode"
},"Placemark": [ {
"id": "p1","address": "中国上海市浦东新区祖冲之路994号-1088号","AddressDetails": {
"Accuracy" : 8,"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "上海市","Locality" : {
"DependentLocality" : {
"DependentLocalityName" : "浦东新区","Thoroughfare" : {
"ThoroughfareName" : "祖冲之路994号-1088号"
}
},"LocalityName" : "上海市"
}
},"CountryName" : "中国","CountryNameCode" : "CN"
}
},"ExtendedData": {
"LatLonBox": {
"north": 31.2070152,"south": 31.2007199,"east": 121.6018752,"west": 121.5955799
}
},"Point": {
"coordinates": [ 121.5986103,31.2038252,0 ]
}
} ]
}
Value [{"id":"p1","ExtendedData":{"LatLonBox":{"south":31.2007199,"west":121.5955799,"east":121.6018752,"north":31.2070152}},"address":"中国上海市浦东新区祖冲之路994号-1088号","Point":{"coordinates":[121.5986103,0]},"AddressDetails":{"Country":{"CountryNameCode":"CN","CountryName":"中国","AdministrativeArea":{"Locality":{"LocalityName":"上海市","DependentLocality":{"DependentLocalityName":"浦东新区","Thoroughfare":{"ThoroughfareName":"祖冲之路994号-1088号"}}},"AdministrativeAreaName":"上海市"}},"Accuracy":8}}] at Placemark of type org.json.JSONArray cannot be converted to JSONObject
PS:这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
希望本文所述对大家Android程序设计有所帮助。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
android通过经纬度获取地址,Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法...相关推荐
- Android studio获取服务器端json数据并解析
最近在做Android的一个项目,涉及到Android studio与服务器端通信问题,在网上看了很多,找到了一些解决办法,这篇文章就简单介绍一下如何获取以及向服务器上传json数据. 在这个项目中, ...
- android json.out,Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- 利用百度APIStoreSDK获取Json数据并解析加载到ListView上
效果图(这里只是截取了List中的一项): 一.:登录百度ApiStore,获取移动sdk Android版(同时有使用文档和示例),将jar包导入到项目中 Android Studio请在放入lib ...
- C#获取http请求的JSON数据并解析
文章目录 1️⃣ C#获取http请求的JSON数据并解析 1.1 获取http的JSON数据 1.2 解析JSON数据 优质资源分享 C#获取http请求的JSON数据并解析,第一步,先拿到http ...
- android通过json获取图片,Android-okhttp获取json数据及解析
Okhttp简介 okhttp是目前android开发中比较流行的一个开源网络请求框架,相比于官网api提供的网络接口有很多优点. android6.0以前,官方sdk提供的是httpUrlConne ...
- android客户端从服务器端获取json数据并解析的实现代码
2019独角兽企业重金招聘Python工程师标准>>> 首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 代码如下: /** * 从指定的URL中获取 ...
- 一个简单的Android客户端从服务器端获取json数据并解析的实现代码
今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下 首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 复制代码代码如下: /** ...
- android天气查询(二)之网络json数据的获取
前面一篇文章介绍了如何使用ksoap获取天气信息,但是使用的网络资源受到了限制,所以我们这里会采用第二种方法,可以无限制的获取.http://m.weather.com.cn/data/1010101 ...
- Android开发--Json数据的解析
在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是: http://code.google.com/p/google-gson/ 下载解压之后你需要将蓝色标记的文件放入到你的程序之中应用 ...
- SpringMVC获取前端传来的json数据的四种方法(前后端json交互总结)
一.导包 一定要有 Jackson 的jar包依赖,就算有了fastjson,也要有Jackson包 <dependency><groupId>com.fasterxml.ja ...
最新文章
- 使用Apache TVM将机器学习编译为WASM和WebGPU
- 大一计算机期末考试高数试卷,高等数学大一期末试卷(A)及答案
- linux C 学习
- vtuber面部捕捉工具_泰国程序员开发VTuber形象生成系统,人人都能当虚拟偶像
- 零元学Expression Blend 4 - Chapter 40 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(上)...
- ITK:形态分水岭MorphologicalWatershed分割
- AI降成本利器!阿里云弹性加速计算实例来了,最高节省50%推理成本
- SpringSecurity 权限控制之异常处理流程图
- 创建线程的办法 java 1615387415
- 简述python常用的函数模块_Python中常用的Python time模块常用函数
- Linux下创建虚拟软盘镜像
- 测试用例经典练习之微信发红包测试用例
- vue后台管理框架配置vux记录
- Android信鸽推送全解
- 高性能软件系统设计中应该考虑的问题
- MySQL单表数据量过大的处理方式经验
- 这部纪录片带你重新认识中华神州大地,领略你不知道的中国
- 金蝶软件认证显示服务器异常,金蝶提示云服务器异常
- Android耗电统计算法
- 逆向分析:还原 App protobuf 协议加密