通过经纬度获得地址与城市名称(原创)

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 通过经纬度获得地址与城市名称(原创)

大部分文章是通过cvs来获得,比较简单,有些信息没有,所以修改了一下如下方法

具体调用方式如下:

jaddrobj = GetJsonAddr(String.valueOf(dLat),
String.valueOf(dLong));
if (jaddrobj==null) {
jaddrobj = SysUtil.GetJsonAddr(String.valueOf(dLat),
String.valueOf(dLong));
}
if (jaddrobj!=null) {
jsobj = jaddrobj.getJSONObject("Status");
if(jsobj.getString("code").equals("200")){
jplacearr = jaddrobj.getJSONArray("Placemark");
jplaceobj = jplacearr.getJSONObject(0);
address = jplaceobj.getString("address");
grobaldata.myAddress = address;// 当前地址放到全局变量里
   grobaldata.curAddress = address;// 当前地址放到全局变量里
   city = jplaceobj.getJSONObject("AddressDetails").getJSONObject("Country")
    .getJSONObject("AdministrativeArea").getJSONObject("Locality")
    .getString("LocalityName");
}
else {
rtValue = "error";
}
}
/**

* 根据经纬度反向解析地址,有时需要多尝试几次

* 注意:(摘自:https://code.google.com/intl/zh-CN/apis/maps/faq.html

* 提交的地址解析请求次数是否有限制?) 如果在 24 小时时段内收到来自一个 IP 地址超过 2500 个地址解析请求, 或从一个 IP

* 地址提交的地址解析请求速率过快,Google 地图 API 编码器将用 620 状态代码开始响应。 如果地址解析器的使用仍然过多,则从该

* IP 地址对 Google 地图 API 地址解析器的访问可能被永久阻止。

* 
* @param latitude
*            纬度
* @param longitude
*            经度
* @return JSONObject
* 
* @author lvqiyong
*/
/*例子如下:
* {
 "name": "29.871398,121.5817",
 "Status": {
   "code": 200,
   "request": "geocode"
 },
 "Placemark": [ {
   "id": "p1",
   "address": "中国浙江省宁波市江东区中兴路360号 邮政编码: 315040",
   "AddressDetails": {
  "Accuracy" : 8,
  "Country" : {
     "AdministrativeArea" : {
        "AdministrativeAreaName" : "浙江省",
        "Locality" : {
           "DependentLocality" : {
              "DependentLocalityName" : "江东区",
              "Thoroughfare" : {
                 "ThoroughfareName" : "中兴路360号"
              }
           },
           "LocalityName" : "宁波市"
        }
     },
     "CountryName" : "中国",
     "CountryNameCode" : "CN"
  }
},
   "ExtendedData": {
     "LatLonBox": {
       "north": 29.8737610,
       "south": 29.8710630,
       "east": 121.5832290,
       "west": 121.5805310
     }
   },
   "Point": {
     "coordinates": [ 121.5818800, 29.8724120, 0 ]
   }
 } ]
}*/
public static JSONObject GetJsonAddr(String latitude, String longitude) {
// 也可以是https://maps.google.cn/maps/geo?output=csv&key=abcdef&q=%s,%s,不过解析出来的是英文地址
// 密钥可以随便写一个key=abc
// output=csv,也可以是xml或json,采用默认的方式是output=json
String url = String
.format(
"https://ditu.google.cn/maps/geo?key=abcdef&q=%s,%s",
latitude, longitude);
HttpGet httpGet = new HttpGet(url); 
        HttpClient client = new DefaultHttpClient();  
        HttpResponse response;  
        StringBuilder stringBuilder = new StringBuilder();  
        try {  
            response = client.execute(httpGet);  
           /* HttpEntity entity = response.getEntity();  
            InputStream stream = entity.getContent();  
            int b;  
            while ((b = stream.read()) != -1) {  
                stringBuilder.append((char) b);  
            }*/
            HttpEntity entity = response.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(entity
.getContent()));
String result = br.readLine();
while (result != null) {
stringBuilder.append(result);
result = br.readLine();
}
        } catch (ClientProtocolException e) {  
        } catch (IOException e) {  
        }  
        JSONObject jsonObject = new JSONObject();  
        try {  
            jsonObject = new JSONObject(stringBuilder.toString());  
        } catch (JSONException e) {  
            e.printStackTrace();  
        }  
        return jsonObject;  
}
相关文章
Java 通过IP获取对应的国家省份城市经纬度(离线文件方案)
一. 除了调用接口查询城市, 还可以通过离线文件查询城市, 使用GeoLite2 City库 二. 离线库下载地址: https://dev.maxmind.com/geoip/geoip2/geolite2/ 点击如下位置下载压缩文件 文件解压后有一个文件名为GeoLite2-City.
|
7月前
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
389 4
|
9月前
|
JSON JavaScript 定位技术
Echarts自定义地图显示区域,可以显示街道,小区,学校等区域
Echarts自定义地图显示区域,可以显示街道,小区,学校等区域
|
JSON 定位技术 数据格式
GeoJSON区县级地理数据信息拼接使用说明
GeoJSON区县级地理数据信息拼接使用说明
725 0
|
定位技术
百度地图开发:字符串经纬度转为经纬度数组的解决方案
百度地图开发:字符串经纬度转为经纬度数组的解决方案
187 0
|
Linux 网络安全 API
Python通过GeoIP获取IP信息(国家、城市、经纬度等)
IP地址信息是非常重要的情报信息,通过IP可以定位到该IP所在的国家、城市、经纬度等。 获取IP信息的方式有很多,很多服务商都提供了相应的地址库或API接口服务。 如国内的ipip.net,国外的ip-api.com、maxmind.com等。 很多公司都是使用Maxmind网站的IP信息库,里面包含着IP的详细信息,有付费的也有免费的,收费与免费的区别就是精准度和覆盖率。 本文介绍下载及定时更新Maxmind的离线库用python通过GeoIP来获取IP信息
747 0
|
移动开发 JavaScript 前端开发
uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)
最近在做获取用户当前定位信息的时候,发现uniapp官方提供的兼容性并不是特别好,光注意事项都是密密麻麻一大堆,在实际使用场景下,效果并不理想,也不是很稳定。于是便重新封装了一下腾讯地图的一些东西,提高了下兼容度!下边我会把我用的封装思路逻辑给大家一一讲解。完整代码可私信我我发给你以上便是基于uni-app框架开发,使用Promise进行异步请求和结果返回,封装的H5获取当前详细定位信息组件希望大家一起交流。
1997 0
|
JSON 定位技术 数据格式
根据现有IP地址获取其地理位置(省份,城市等)的方法
根据现有IP地址获取其地理位置(省份,城市等)的方法
1271 0
|
小程序 定位技术 API
小程序地图学习之获取位置 获取经纬度 获取地名 获取地址
小程序地图学习之获取位置 获取经纬度 获取地名 获取地址
217 0
|
JSON 大数据 BI
行政区信息_介绍|学习笔记
快速学习行政区信息_介绍
142 0
行政区信息_介绍|学习笔记