博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何根据经纬度获取地址
阅读量:6246 次
发布时间:2019-06-22

本文共 3137 字,大约阅读时间需要 10 分钟。

如何根据经纬度获取地址

一、总结

一句话总结:获取地理位置的正确做法先先获取精度纬度(这个比较容易),然后根据精度纬度获取具体的地址,相对也比较容易。

 

 

 

二、如何通过百度地图将经纬度转换为地址信息

最近打算做电站编辑的功能,用户在新建电站之后需要输入一长串的地址信息,要选择国家、省份、城市、县、乡,然后再输入详细的地址,在手机中输入本来就不容易,所以一直在想怎么才能够简化用户的输入。

刚好我们的应用也需要让用户输入经纬度,既然有了位置信息,应该就有办法可以得到地址信息,找了之后发现百度地图API就有这种功能,百度,我越来越喜欢你了。

下面将收集的信息汇总如下:

1)经纬度的来源。这个可以有两种方式:

  一,是直接使用手机gps的位置信息,这个百度地图API无法直接使用,必须转换,各种类型的位置坐标的转换API,可以参考:

  二,通过百度地图选点,这个得到的就是百度地图的经纬度了;

  三,如果是在电脑上想要获取某个地方的经纬度信息,则可以通过这个网站来提取: 

2)百度地图根据经纬度获取地址的API,

  api的官方文档: 

      举例:http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1  

 

有了这些资料之后,我们就可以这样做:

1)首先获取到手机gps的经纬度;

2)然后通过 的API转换为百度地图的经纬度;

3)然后调用  的API将该经纬度转换为地址,从中提取出国家、省份、市、县、乡镇信息;

4)将该地址信息填写到地址栏,然后用户在做简单修改即可。

 

三、通过经纬度获取地理位置信息

最近做一个车载设备app,设备获取北斗gps数据上传的到后台,app通过后台提供的经纬度反取地理编码位置,支持Google和百度。

获取地理位置url

//Googlepublic String getGoogleUrl(boolean isCn, String longitude,String latitude) {    if (!isCn) {        return "http://maps.google.com/maps/api/geocode/json?latlng="+latitude+","+longitude+"&sensor=false&language="                + Locale.getDefault().getLanguage() + "-" + Locale.getDefault().getCountry();    } else {        return "http://ditu.google.cn/maps/api/geocode/json?latlng="+latitude+","+longitude+"&sensor=false&language="                + Locale.getDefault().getLanguage() + "-" + Locale.getDefault().getCountry();    }}//百度,到百度地图获取ak密钥public String getBaiduUrl(String longitude,String latitude) {    return "http://api.map.baidu.com/geocoder/v2/?" +            "ak=ahH7ICSO020gfifmGVog5OTimwq" +            "&mcode=DC:B1:26:FF:66:49:62:85:98:16:AE:2A:E8:69:A9:EE:AC:14:3B;com.icar.taxi" +            "&output=json" +            "&pois=0&location="+latitude+","+longitude;}

获取详细街道地址

/*** @return 详细街道地址*/public String getAddress(String url){    //定义一个HttpClient,用于向指定地址发送请求    HttpClient client = new DefaultHttpClient();    //向指定地址发送Get请求    HttpGet hhtpGet = new HttpGet(url);    StringBuilder sb = new StringBuilder();    try {        //获取服务器响应        HttpResponse response = client.execute(hhtpGet);        HttpEntity entity = response.getEntity();        if(entity !=null){               BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(),"UTF-8"),8192);               String line =null;               while ((line= reader.readLine())!=null){                   sb.append(line +"\n");               }               reader.close();           }           //将服务器返回的字符串转换为JSONObject  对象        JSONObject jsonObject = new JSONObject(sb.toString());        //从JSONObject 中取出location 属性        if (AppConfig.mapType()) {            return jsonObject.optJSONObject("result").optString("formatted_address");        } else {            return jsonObject.optJSONArray("results").optJSONObject(0).optString("formatted_address");        }    } catch (ClientProtocolException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    } catch (JSONException e) {         e.printStackTrace();    } catch (Exception e) {        e.printStackTrace();    }    return null;}

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9302523.html

你可能感兴趣的文章
Scrapy爬虫入门
查看>>
c++运算符重载
查看>>
Advanced Auto Layout:Size-Class-Specific Layout
查看>>
给SVN或者TortoiseSVN设置代理的方法
查看>>
无法打开项目文件web.csproj,此安装不支持该项目类型
查看>>
C++ function/bind
查看>>
ASP.NET MVC4 Forms 登录验证
查看>>
windows和ubuntn互传文件
查看>>
vue router mode 设置"hash"与"history"的区别
查看>>
dotnet --info
查看>>
运算符优先级
查看>>
接口测试-python
查看>>
python使用hbase
查看>>
我太水了~
查看>>
Mysql-proxy中的lua脚本编程(一)
查看>>
SY-SUBRC 的含义【转】
查看>>
仓库管理系统用例建模
查看>>
转换数字为人民币大写金额
查看>>
Python爬虫之爬取西刺免费IP并保存到MySQL
查看>>
PostgreSQL的进程结构
查看>>