zoukankan      html  css  js  c++  java
  • 如何根据经纬度获取地址

    如何根据经纬度获取地址

    一、总结

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

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

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

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

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

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

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

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

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

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

      api的官方文档:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding 

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

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

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

    2)然后通过http://www.gpsspg.com/api/convert/latlng/ 的API转换为百度地图的经纬度;

    3)然后调用http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding  的API将该经纬度转换为地址,从中提取出国家、省份、市、县、乡镇信息;

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

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

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

    获取地理位置url

    //Google
    public 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 +"
    ");   
                }   
                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;
    }
     
  • 相关阅读:
    关于连通性问题的Tarjan算法暂结
    【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学
    Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
    【NOIP模拟赛】Drink 二维链表+模拟
    【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
    【BZOJ 4198】[Noi2015]荷马史诗 哈夫曼编码
    【NOIP模拟赛】chess 建图+spfa统计方案数
    【TMD模拟赛】上低音号 链表
    【TMD模拟赛】黄金拼图 Cao
    【BZOJ 4007】[JLOI2015]战争调度 DP+搜索+状压
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9302523.html
Copyright © 2011-2022 走看看