根据经纬度获取地址 :位置名称 区 市 省 国家 邮编

方式1: 根据经纬度获取: 省 市 区 位置名称

import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/*
 * 根据经纬度获取地址:省 市 区 位置名称
 * */

public class AddressUtils {
    public static void main(String[] args) {
        Map<String, String> map = getAdd(39.988429, 116.4839);
        System.out.println(JSON.toJSONString(map));
    }

    /**
     *  根据经纬度获取位置信息
     * @param latitude 纬度
     * @param longitude 经度
     * @return
     */
    public static Map<String, String> getAdd(double latitude, double longitude) {
        // type : 100代表道路,010代表POI(信息点),001代表门址,111可以同时显示前三项
        String urlString = "http://gc.ditu.aliyun.com/regeocoding?l=" + latitude + "," + longitude + "&type=010";
        String add = "";
        try {
            URL url = new URL(urlString);
            java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            java.io.BufferedReader in = new java.io.BufferedReader(
                    new java.io.InputStreamReader(conn.getInputStream(), "UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                add += line;
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //System.out.println(add);
        
        Map<String, String> map = new HashMap<String, String>();
        JSONObject jsonObject = JSONObject.fromObject(add);
        JSONArray jsonArray = JSONArray.fromObject(jsonObject.getString("addrList"));
        if(jsonArray.size() > 0){
            JSONObject j_2 = JSONObject.fromObject(jsonArray.get(0));
            String allAdd = j_2.getString("admName");
            String[] arr = allAdd.split(",");
            if(arr.length > 0){
                System.out.println("省:" + arr[0] + "\n市:" + arr[1] + "\n区:" + arr[2]);
                map.put("county", arr[2]);//县/区
                map.put("city", arr[1]);//
                map.put("province", arr[0]);//
            }
        }
        return map;
    }
}

方式2: 根据经纬度获取: 位置名称 区 市 省 国家 邮编

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/*
 * 根据经纬度获取地址:位置名称 区 市 省 国家 邮编
 * */

public class AddCountryUtils {
    public final static void main(String[] args) {
        Map<String, String> map = GetLocationMsg(39.988429, 116.4839);
        System.out.println(JSON.toJSONString(map));
    }

    /**
     *  根据经纬度获取位置信息
     * @param latitude 纬度
     * @param longitude 经度
     * @return
     */
    public static Map<String, String> GetLocationMsg(double latitude, double longitude) {
        String add = "";
        String url = String.format("http://maps.google.cn/maps/api/geocode/json?latlng=%s,%s&language=CN", latitude,
                longitude);
        URL myURL = null;
        URLConnection httpsConn = null;
        try {
            myURL = new URL(url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        try {
            httpsConn = (URLConnection) myURL.openConnection();
            if (httpsConn != null) {
                InputStreamReader insr = new InputStreamReader(httpsConn.getInputStream(), "UTF-8");
                BufferedReader br = new BufferedReader(insr);
                String data = null;
                while ((data = br.readLine()) != null) {
                    add = add + data;
                }
                insr.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //System.out.println(add);
        
        Map<String, String> map = new HashMap<String, String>();
        JSONObject jsonObject = JSONObject.fromObject(add);
        if (jsonObject.getString("status").equals("OK")) {
            JSONArray jsonArray = JSONArray.fromObject(jsonObject.getString("results"));
            if (jsonArray.size() > 0) {
                JSONObject job = JSONObject.fromObject(jsonArray.get(0));
                JSONArray jar = JSONArray.fromObject(job.getString("address_components"));
                if (jar.size() > 0) {
                    for (int i = 0; i < jar.size(); i++) {
                        JSONObject addjob = JSONObject.fromObject(jar.get(i));
                        String name = addjob.getString("long_name");
                        System.out.println(name);
                        int j = 0;
                        if(job.getString("formatted_address").contains("邮政编码")){
                            j = 1;
                            if(i == jar.size() - 1)
                                map.put("ZipCode", name);//邮编
                        }
                        if(i == jar.size() - 4 - j)
                            map.put("county", name);//县/区
                        if(i == jar.size() - 3 - j)
                            map.put("city", name);//
                        if(i == jar.size() - 2 - j)
                            map.put("province", name);//
                        if(i == jar.size() - 1 - j)
                            map.put("country", name);//
                    }
                }
            }
        }
        return map;
    }
}

 转载自:http://blog.csdn.net/llllvvv/article/details/77235641

转载于:https://www.cnblogs.com/SimonHu1993/p/8258920.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
刚整理的,最新的数据,包含雄安新,平凉(0933)、陇南(0939)、石嘴山(0952)、防城港(0770)等,中国各行政级别县邮编经纬度最新数据mysql数据库数据表 部分源码如下: -- 生成日期: 2019-11-08 14:42:49 -- 服务器版本: 5.7.26 -- PHP 版本: 5.6.9 DROP TABLE IF EXISTS `think_cityinfo`; CREATE TABLE IF NOT EXISTS `think_cityinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `pid` int(11) NOT NULL COMMENT '上级行政id', `name` varchar(30) CHARACTER SET utf8 DEFAULT NULL COMMENT '行政名称', `merger_name` varchar(80) CHARACTER SET utf8 DEFAULT NULL COMMENT '行政全名', `level` int(4) DEFAULT NULL COMMENT '第几级行政', `city_code` varchar(8) DEFAULT NULL COMMENT '号', `zip_code` varchar(6) DEFAULT NULL COMMENT '邮编', `lng` varchar(12) DEFAULT NULL COMMENT '经度', `lat` varchar(12) DEFAULT NULL COMMENT '纬度', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=820302 DEFAULT CHARSET=utf8mb4 COMMENT='中国邮编号、经纬度' ROW_FORMAT=COMPACT; INSERT INTO `think_cityinfo` (`id`, `pid`, `name`, `merger_name`, `level`, `city_code`, `zip_code`, `lng`, `lat`) VALUES (100000, 0, '中国', '中国', 0, '', '', '116.3683244', '39.915085'), (110000, 100000, '北京', '北京', 1, '', '', '116.405285', '39.904989'), (110100, 110000, '北京', '北京,北京', 2, '010', '100000', '116.405285', '39.904989'), (130685, 130600, '雄安新', '河北,保定,雄安新', 3, '0312', '071000', '115.976478', '38.995544'),

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值