根据经纬度获取该地址所属省/市/区/乡镇/街道名称
1.这里演示的代码目的是为了通过经纬度,获取该地址所属乡镇名称、区名、全名。
2.使用了百度地图API接口:
详情:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad&qq-pf-to=pcqq.c2c
3.直接上代码:
package grab;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import java.util.UUID;import com.alibaba.fastjson.JSONObject;public class town {public static void main(String[] args) {//String uid = newGUID();String town = getAdressDetail(118.726425,31.092391);System.out.println(town);}/*** 逆地理编码 获取乡镇名称*/public static String getAdressDetail(double lng,double lat) {String result = "";// 访问返回结果BufferedReader read = null;// 读取访问结果String town = "";//城镇名称String regionScope = "";//城镇范围String url = "http://api.map.baidu.com/reverse_geocoding/v3/";String param = "ak=SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR&output=json&coordtype=wgs84ll&extensions_town=true"+"&location="+lat+","+lng;//System.out.println("访问地址:" + url + "?" + param);try {// 创建urlURL realurl = new URL(url + "?" + param);// 打开连接URLConnection connection = realurl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立连接connection.connect();// 获取所有响应头字段
// Map<String, List<String>> map = connection.getHeaderFields();
// // 遍历所有的响应头字段,获取到cookies等
// for (String key : map.keySet()) {
// System.out.println(key + "--->" + map.get(key));
// }// 定义 BufferedReader输入流来读取URL的响应read = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String line;// 循环读取while ((line = read.readLine()) != null) {result += line;}//不为空,解析处城镇名称if(!"".equals(result)){JSONObject jsonInfo = JSONObject.parseObject(result);town = JSONObject.parseObject(JSONObject.parseObject(jsonInfo.getString("result")).getString("addressComponent")).getString("town").toString();regionScope = JSONObject.parseObject(jsonInfo.getString("result")).getString("formatted_address")+town;System.out.println(regionScope);}} catch (IOException e) {e.printStackTrace();} finally {if (read != null) {// 关闭流try {read.close();} catch (IOException e) {e.printStackTrace();}}}return town;}/*** 产生一个32位的GUID* @return*/public static String newGUID(){UUID uuid = UUID.randomUUID();return uuid.toString();}}
4.看效果:
5.技术点分析:
/**1.刚拿到的result,是一个json格式的字符串,该字符串,有好几层嵌套,所以在取数据的时候,需要一层一层解析{"status":0,"result":{"location":{"lng":118.73814909971941,"lat":31.095934413770754},"formatted_address":"安徽省宣城市宣州区","business":"","addressComponent":{"country":"中国","country_code":0,"country_code_iso":"CHN","country_code_iso2":"CN","province":"安徽省","city":"宣城市","city_level":2,"district":"宣州区","town":"养贤乡","adcode":"341802","street":"","street_number":"","direction":"","distance":""},"pois":[],"roads":[],"poiRegions":[],"sematic_description":"","cityCode":190}}*2.首先需要将字符串转换成json对象*3.获取最外面的json内容:result --JSONObject.parseObject(jsonInfo.getString("result")).toString*4.在获取result 里面最外侧的json内容:addressComponent -JSONObject.parseObject(JSONObject.parseObject(jsonInfo.getString("result")).getString("addressComponent")).toString*5.最后就能获取乡镇名称了:town--JSONObject.parseObject(JSONObject.parseObject(jsonInfo.getString("result")).getString("addressComponent")).getString("town").toString();*///不为空,解析处城镇名称if(!"".equals(result)){JSONObject jsonInfo = JSONObject.parseObject(result);town = JSONObject.parseObject(JSONObject.parseObject(jsonInfo.getString("result")).getString("addressComponent")).getString("town").toString();regionScope = JSONObject.parseObject(jsonInfo.getString("result")).getString("formatted_address")+town;System.out.println(regionScope);}
6.jar包。。。。
这里有我的jar包连接,可以直接用。或者复制import后面的工具名去别的地方下载。
点我下载
根据经纬度获取该地址所属省/市/区/乡镇/街道名称相关推荐
- 百度地图得到两地点(通过经纬度)的距离、 通过经纬度获取详细地址
1 /** 2 * 计算两点间的距离 3 * pt1 {lng:"12.34",lat:"3423"}第一个点的经纬度 4 * pt2 {lng:"1 ...
- WEB开发 高德地图应用,初始加载,地图定位,层级变化控制,根据经纬度获取详细地址信息,点击事件以及地图自适应
1.前台html位置准备 <div id="Sharingrouter"> <div id="container" r ...
- java 行政区划获取代码 省/市/县/乡镇/街道/村委会 层级 DivisionAdvUtil 爬虫获取完整的行政区划 代码完整 可运行
/** * 行政区划获取,层级有省,市,县,乡镇,街道,村委会<br> * 数据源查看: ①.http://www.stats.gov.cn/sj/tjbz<br> * ...
- 【Android App】GPS获取定位经纬度和根据经纬度获取详细地址讲解及实战(附源码和演示 超详细)
需要全部代码请点赞关注收藏后评论区留言私信~~~ 一.获取定位信息 开启定位相关功能只是将定位的前提条件准备好,若想获得手机当前所处的位置信息,还要依靠下列的3种定位工具. (1)定位条件器Crite ...
- 在vue项目引入天地图,根据经纬度获取具体地址
1.申请key 天地图地图服务对所有用户开放.使用本组服务之前,需要申请Key 2.引入API 地图API是由JavaScript语言编写的,您在使用之前需要通过<script>标签将AP ...
- 微信小程序开发--当前位置的详细地址获取amp;amp;amp;amp;城市列表获取-具体到:省--市--区、县级市---乡镇、街道
1. 申请开发者密钥(key):申请密钥 2. 下载微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.0 3. 安全域名设置,在"设置" -> ...
- 百度地图api根据经纬度获取详细地址
var point = new BMap.Point(longitude,latitude);//用所定位的经纬度查找所在地省市街道等信息var gc = new BMap.Geocoder();gc ...
- Android使用Google定位服务定位并将经纬度转换为详细地址信息(国省市县街道)
本文是作者在学习使用Google定位服务定位时的学习笔记,采用的是Kotlin语言编写. 1.位置权限以及定位服务 1.1 位置权限 1.2 动态权限申请 1.3 位置服务 1.4 APP权限与定位服 ...
- Arcmap软件中将地图上的省/市/区/县的名称显示出来
本例讲解以邯郸市为例: 首先双击打开提前导进去.shp格式的邯郸市地图图层属性面板,选择Symbology--左侧Shwo--Categories--Unique values,左侧值字段选择&quo ...
最新文章
- 单片机c语言中的循环语句,单片机c语言教程:C51循环语句
- 开源Android容器化框架Atlas开发者指南
- shell脚本重启tomcat
- 工作区 暂存区 版本库之间的关系
- 云原生的新思考,为什么容器已经无处不在了
- 【Elasticsearch】Elasticsearch 索引生命周期管理
- c++ 模板类实现堆栈实验报告_5分钟学会C/C++多线程编程进程和线程
- 计算机要重启电脑才能检测出u盘启动,电脑使用U盘需要重启才能识别分析及解决措施...
- 揭秘骗术:黑客人肉、查开房的灰色项目
- Va02 修改数量和价格条件时报错
- vmbox 宿主机ssh登录虚拟机
- 使用拦截器或者AOP实现权限管理(OA系统中实现权限控制)
- 重新安装的nvidia显卡驱动
- 从李嘉诚先生那里得到的
- 运行数据区③---方法区
- 笔记本 原因代码: 0x500ff 关机类型: 关闭电源_关于笔记本电池更换的建议
- php 判断来源 微信客户端_使用PHP判断是否为微信、支付宝等移动设备访问代码...
- Android-绝对音量和相对音量设置
- About Variables
- Python爬虫:爬取百度图片(selenium模拟登录,详细注释)