为了能到远方,脚下的每一步都不能少.|

玩单机的零度

园龄:2年3个月粉丝:1关注:8

📂工作
🔖java
2022-12-09 15:40阅读: 98评论: 0推荐: 0

百度开发者根据地名查询经纬度api

说明

工作中,项目经理让我全国的省市区的经纬度进行统计到数据库中,在网上也没有找到好的方式,有些网站也只有一个个查,后来,我想到通过爬虫的形式调用api进行获取,然后找到了百度的api,发现有相关通过地名获取经纬度的接口,然后我通过简单的注册,成功的完成了该项任务,只不过老板给我的评价很奇怪,

项目经理:小伙子很不错,是个快枪手。 我:???(内心充满疑问,快枪手能用来形容效率高的吗,我没敢回复。)

首先在百度地图开发平台进行注册

🚀百度地图开放平台

创建应用

应用管理–>创建应用–>创建成功即可生成AK

根据地名查询经纬度demo

import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;

public class AddressUtil {


    public static String getCoordinate(String Stringunitaddr) {

        System.out.println("要查询的地名:"+Stringunitaddr);

        //去掉中文地址中的空白字符
        String unitaddr=Stringunitaddr.replaceAll("\\s*", "");


        String url = "http://api.map.baidu.com/geocoding/v3/?output=json&ak=百度申请的AK&address=" + unitaddr;

        String json = loadJSON(url);
        System.out.println("开始执行百度接口:"+url);
        System.out.println("百度返回的json:"+json);
        if (!"".equals(json)) {
            //先把String对象转换成json对象
            JSONObject obj= JSONObject.parseObject(json);
            if ("0".equals(obj .getString("status"))) {
                //查询成功情况
                System.out.println("成功返回的信息:"+obj);
                double lng = obj .getJSONObject("result").getJSONObject("location").getDouble("lng"); // 经度
                double lat = obj .getJSONObject("result").getJSONObject("location").getDouble("lat"); // 纬度
                DecimalFormat df = new DecimalFormat("#.######");
                return df.format(lng)+","+df.format(lat);

            }else {
                //查询失败情况
                if ("1".equals(obj .getString("status"))) {
                    //未找到地理位置信息
                    System.out.println("未找到地理位置返回的信息:"+obj);
                    return '1'+","+'1';
                }else if("302".equals(obj .getString("status"))){
                    System.out.println("配额超限返回的信息:"+obj);
                    //每天配额超标的情况
                    return '0'+","+'0';
                }
            }
        }

        return '1'+","+'1';
    }

    public static String loadJSON(String url) {
        StringBuilder json = new StringBuilder();
        try {
            URL oracle = new URL(url);
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), StandardCharsets.UTF_8));
            String inputLine = null;
            while ((inputLine = in.readLine()) != null) {
                json.append(inputLine);
            }
            in.close();
        } catch (IOException ignored) {}
        return json.toString();
    }
}

 

本文作者:玩单机的零度

本文链接:https://www.cnblogs.com/cxyfyf/p/16969102.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   玩单机的零度  阅读(98)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起