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

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

大部分文章是通过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;  
}
相关文章
全国各省份简称、省会、经纬度
经纬度严格可靠,使用工具一个个在地图测算出来的
|
10月前
|
JSON 定位技术 数据格式
GeoJSON区县级地理数据信息拼接使用说明
GeoJSON区县级地理数据信息拼接使用说明
508 0
|
10月前
|
定位技术 Python
python高德地图webAPI:地理编码将地址信息转化为经纬度坐标
python高德地图webAPI:地理编码将地址信息转化为经纬度坐标
160 0
python高德地图webAPI:地理编码将地址信息转化为经纬度坐标
|
10月前
|
定位技术
百度地图开发:字符串经纬度转为经纬度数组的解决方案
百度地图开发:字符串经纬度转为经纬度数组的解决方案
79 0
|
9月前
|
移动开发 JavaScript 前端开发
uniapp在H5获取当前定位信息不需要SDK可直接获取城市(包括经纬度省市区和市区编码)
最近在做获取用户当前定位信息的时候,发现uniapp官方提供的兼容性并不是特别好,光注意事项都是密密麻麻一大堆,在实际使用场景下,效果并不理想,也不是很稳定。于是便重新封装了一下腾讯地图的一些东西,提高了下兼容度!下边我会把我用的封装思路逻辑给大家一一讲解。完整代码可私信我我发给你以上便是基于uni-app框架开发,使用Promise进行异步请求和结果返回,封装的H5获取当前详细定位信息组件希望大家一起交流。
1154 0
|
10月前
|
定位技术
Echarts地图开发:geomap全国34省市区cp属性经纬度坐标
Echarts地图开发:geomap全国34省市区cp属性经纬度坐标
54 0
|
12月前
|
小程序 定位技术 API
小程序地图学习之获取位置 获取经纬度 获取地名 获取地址
小程序地图学习之获取位置 获取经纬度 获取地名 获取地址
145 0
|
数据采集 Python
一日一技:如何从地址中提取省市区?
一日一技:如何从地址中提取省市区?
257 0
|
JSON 定位技术 数据格式
根据现有IP地址获取其地理位置(省份,城市等)的方法
根据现有IP地址获取其地理位置(省份,城市等)的方法
987 0