博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用百度LBS做一个小Demo
阅读量:6247 次
发布时间:2019-06-22

本文共 4699 字,大约阅读时间需要 15 分钟。

  hot3.png

  • 申请ak(即获取密钥

    • 去这儿注册一个开发者账号即可

  • 拼写发送http请求的url

    • 譬如这样的调用

    • http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation
  • 接收http请求返回的数据

下面看看代码

/** * 接口常量 * @author rex * */public interface BaiDuApi {    /*     * 根据ip获取信息     */    public static final String BD_IP_LOCATION_API = "http://api.map.baidu.com/location/ip";        /*     *根据城市/经纬度获取信息     */    public static final String BD_LOCATION2POINT_API = "http://api.map.baidu.com/geocoder/v2/";        /*     * 百度lbs ak密钥     */    public static final String BD_LBS_AK = "你申请的AK";    }

    

/* * 百度地图API */public final class BaiDuMapApi {    private static Map
 params = CollectionUtil.newHashMap();    private static final List
 LOCAL_IP = Arrays.asList("127.0.0.1", "localhost");    /*     * 根据ip获取经纬度     */    public static Map
 getPoint(String ip) {        params.clear();        Map
 point = CollectionUtil.newHashMap();        if (null != ip && !LOCAL_IP.contains(ip)) {            params.put("ip", ip);        }        params.put("ak", BaiDuApi.BD_LBS_AK);        params.put("coor", "bd09ll");        String r = HttpKit.get(BaiDuApi.BD_IP_LOCATION_API, params);        String json = StringUtils.unicodeToString(r);        Map
 map = JSONUtil.json2Map(json);        Map
 content = JSONUtil.json2Map(map.get("content").toString());        Map
 xy = JSONUtil.json2Map(content.get("point").toString());        point.put("latitude", xy.get("y"));        point.put("longitude", xy.get("x"));        return point;    }    /*     * 根据城市和地址获取经纬度     */    public static Map
 getPoint(String city, String address) {        params.clear();        Map
 point = CollectionUtil.newHashMap();        if (StringUtils.isNotBlank(city) && StringUtils.isNotBlank(address)) {            params.put("ak", BaiDuApi.BD_LBS_AK);            params.put("callback", "renderOption");            params.put("output", "json");            params.put("city", city);            params.put("address", address);            String r = HttpKit.get(BaiDuApi.BD_LOCATION2POINT_API, params);            String json = StringUtils.unicodeToString(r.substring(r.indexOf("{"), r.lastIndexOf("}") + 1));            Map
 map = JSONUtil.json2Map(json);            Map
 content = JSONUtil.json2Map(map.get("result").toString());            Map
 location = JSONUtil.json2Map(content.get("location").toString());            point.put("latitude", location.get("lat").toString());            point.put("longitude", location.get("lng").toString());        }        return point;    }    /*     * 根据ip获取address     */    public static Map
 getAddress(String ip) {        params.clear();        Map
 address_detail = CollectionUtil.newHashMap();        if (null != ip && !LOCAL_IP.contains(ip)) {            params.put("ip", ip);        }        params.put("ak", BaiDuApi.BD_LBS_AK);        String r = HttpKit.get(BaiDuApi.BD_IP_LOCATION_API, params);        String json = StringUtils.unicodeToString(r);        Map
 map = JSONUtil.json2Map(json);        Map
 content = JSONUtil.json2Map(map.get("content").toString());        address_detail = JSONUtil.json2Map(content.get("address_detail").toString());        return address_detail;    }    /*     * 根据经纬度获取详细地址     */    public static Map
 getAddress(String latitude, String longitude) {        params.clear();        Map
 info = CollectionUtil.newHashMap();        if (StringUtils.isNotBlank(latitude) && StringUtils.isNotBlank(longitude)) {            params.put("callback", "renderReverse");            params.put("ak", BaiDuApi.BD_LBS_AK);            params.put("location", latitude + "," + longitude);            params.put("output", "json");            params.put("pois", "0");            String r = HttpKit.get(BaiDuApi.BD_LOCATION2POINT_API, params);            String json = StringUtils.unicodeToString(r.substring(r.indexOf("{"), r.lastIndexOf("}") + 1));            Map
 map = JSONUtil.json2Map(json);            info = JSONUtil.json2Map(map.get("result").toString());        }        return info;    }}

/* * 百度地图API测试 */public class Test {    public static void main(String[] args) {        //获取地址信息        Map
 m1 = BaiDuMapApi.getAddress(null);        System.out.println(m1);                //获取经纬度信息        Map
 m2 = BaiDuMapApi.getPoint(null);        System.out.println(m2);                //根据城市获取经纬度        Map
 m3 = BaiDuMapApi.getPoint("上海市", "东方明珠");        System.out.println(m3);                //根据经纬度获取地址        Map
 m4 = BaiDuMapApi.getAddress(m3.get("latitude"), m3.get("longitude"));        System.out.println(m4);    }}

    

{province=上海市, city=上海市, street=, district=, street_number=, city_code=289}{latitude=31.24916171, longitude=121.48789949}{latitude=31.244750205504, longitude=121.50713723717}{formatted_address=上海市浦东新区陆家嘴环路1388号, business=东外滩,陆家嘴,外滩, cityCode=289, location={"lat":31.244750051136,"lng":121.50713723717}, addressComponent={"city":"上海市","district":"浦东新区","province":"上海市","street":"陆家嘴环路","street_number":"1388号"}}

转载于:https://my.oschina.net/biezhi/blog/299295

你可能感兴趣的文章
K 班1-7,alpha,beta 作业成绩汇总
查看>>
uva-10879-因数分解
查看>>
清空表且自增的id重新从0开始
查看>>
[杂记]如何在LaTeX里插入高亮代码
查看>>
「常微分方程」(阿諾爾德) Page 6 問題4 經過擴張相空間的每一點有且僅有一條積分曲線...
查看>>
同一个闭区间上有界变差函数的和与积都是有界变差函数
查看>>
java安全证书配置
查看>>
使用erlang 建立一个自动化的灌溉系统(1)准备工作
查看>>
python 调用aiohttp
查看>>
mysql 案例~ mysql故障恢复
查看>>
Spring Boot中使用MyBatis注解配置详解
查看>>
MatLab实现FFT与功率谱
查看>>
答《漫话ID》中的疑问:UniqueID和ClientID的来源
查看>>
【转】Asp.net控件开发学习笔记整理篇 - 服务器控件生命周期
查看>>
Linux下的shell编程(一)BY 四喜三顺
查看>>
javascript一些小技巧
查看>>
I00024 出钱买羽
查看>>
linux下文件的一些文件颜色的含义
查看>>
websotrm注册码
查看>>
迭代器(Iterable)和for..in..的三种协议
查看>>