如何利用地图API接口根据地址获取具体的经纬度?
目录
一、登录到百度地图开放平台
百度地图开放平台网址:https://lbsyun.baidu.com/
二、认证为开发者
这里你有两种选择,可以选择认证个人开发者或者企业开发者,区别在企业认证每日接口调用次数配额更多,并发调用频率越高。
三、创建应用
白名单限制填写:0.0.0.0/0 即可,便于调试。
四、地址转经纬度API接口
https://api.map.baidu.com/geocoding/v3/?address=天津宝坻区钰华街道金玉一园&output=xml&ak=IfyIr3ZMDihB6QTAVw4GoFBsX7Z6nEPb
这里output支持json和xml格式返回。
五、封装JAVA工具类
package com.ruoyi.common.utils;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.http.HttpUtil;
import org.w3c.dom.Document;
import javax.xml.xpath.XPathConstants;
import java.util.HashMap;
import java.util.Map;
/**
* 百度地图定位接口
*/
public class BaiduMapUtils {
public static Map<String, String> getAddressLngLat(String address) {
Map<String, String> result = new HashMap<>();
final String ak_token = "ak密钥";
String xml = HttpUtil.get("https://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=xml&ak=" + ak_token);
try {
Document doc = XmlUtil.parseXml(xml);
String lng = (String) XmlUtil.getByXPath("//location/lng", doc, XPathConstants.STRING);
String lat = (String) XmlUtil.getByXPath("//location/lat", doc, XPathConstants.STRING);
System.out.println("lng = " + lng);
System.out.println("lat = " + lat);
result.put("lng", lng);
result.put("lat", lat);
} catch (Exception e) {
System.out.println(" 百度地址解析异常" + e.getMessage());
return null;
}
return result;
}
}