栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java根据经纬度获取城市

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java根据经纬度获取城市

1. 在百度地图开发平台里面创建应用,获取ak值

2. 调用百度地图接口采用httpClient技术: 

import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.Map;

public class HttpClientUtils {

    //传入经纬度, 返回查询的地区, lng: 纬度, lat: 经度
    public static String findByLatAndLng(String lng, String lat) {
        try {
            //移除坐标前后的 空格
            

            CloseableHttpClient httpClient = HttpClients.createDefault();
            // url中的ak值要替换成自己的:
            String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=百度地图ak值&output=json&coordtype=wgs84ll&location=" + lng + "," + lat;
            //System.out.println(url);
            HttpGet httpGet = new HttpGet(url);

            CloseableHttpResponse response = httpClient.execute(httpGet);

            HttpEntity httpEntity = response.getEntity();

            String json = EntityUtils.toString(httpEntity);

            Map result = JSONObject.parseObject(json, Map.class);
            if (result.get("status").equals(0)) {
                Map resultMap = (Map) result.get("result");
                resultMap = (Map) resultMap.get("addressComponent");
                String country = (String) resultMap.get("country");
                String province = (String) resultMap.get("province");
                String city = (String) resultMap.get("city");
                return country + province + city;
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}

3. 测试该工具类是否能用

 

public static void main(String[] args) {
    //124.802554,51.132573  前边是纬度,  后边经度.
    //49.146493,126.568695
    String address = HttpClientUtils.findByLatAndLng("51.132573", "124.802554");
    System.out.println("地址是: " + address);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号