百度开发者根据地名查询经纬度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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步