当前位置: 首页 > news >正文

利用百度LBS做一个小Demo

  • 申请ak(即获取密钥

    • http://lbsyun.baidu.com/apiconsole/key?application=key 去这儿注册一个开发者账号即可

  • 拼写发送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<StringString> params = CollectionUtil.newHashMap();

    private static final List<String> LOCAL_IP = Arrays.asList("127.0.0.1""localhost");

    /*
     * 根据ip获取经纬度
     */
    public static Map<StringString> getPoint(String ip) {
        params.clear();
        Map<StringStringpoint = 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<StringObjectmap = JSONUtil.json2Map(json);
        Map<StringObject> content = JSONUtil.json2Map(map.get("content").toString());
        Map<StringString> xy = JSONUtil.json2Map(content.get("point").toString());
        point.put("latitude", xy.get("y"));
        point.put("longitude", xy.get("x"));
        return point;
    }

    /*
     * 根据城市和地址获取经纬度
     */
    public static Map<StringString> getPoint(String city, String address) {
        params.clear();
        Map<StringStringpoint = 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<StringObjectmap = JSONUtil.json2Map(json);
            Map<StringObject> content = JSONUtil.json2Map(map.get("result").toString());
            Map<StringObject> 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<StringString> getAddress(String ip) {
        params.clear();
        Map<StringString> 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<StringObjectmap = JSONUtil.json2Map(json);
        Map<StringObject> content = JSONUtil.json2Map(map.get("content").toString());
        address_detail = JSONUtil.json2Map(content.get("address_detail").toString());
        return address_detail;
    }

    /*
     * 根据经纬度获取详细地址
     */
    public static Map<StringObject> getAddress(String latitude, String longitude) {
        params.clear();
        Map<StringObject> 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<StringObjectmap = JSONUtil.json2Map(json);
            info = JSONUtil.json2Map(map.get("result").toString());
        }
        return info;
    }

}

/*
 * 百度地图API测试
 */
public class Test {

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

    

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

相关文章:

  • mongodb的操作
  • SQL SELECT基本语句结构
  • node + mongodb客户端
  • node + mongoose
  • Oracle定时值执行存储过程
  • Express生成器
  • 处理文件缓存
  • http模块
  • fs模块
  • fs 流
  • Autohotkey读写ini文件内容
  • 静态资源托管
  • 难道.NET Core到R2连中文编码都不支持吗?
  • 前端和后端接口的实现简述
  • DCloud与APICloud的对比
  • CSS居中完全指南——构建CSS居中决策树
  • ES6系统学习----从Apollo Client看解构赋值
  • IDEA 插件开发入门教程
  • java第三方包学习之lombok
  • Java应用性能调优
  • magento2项目上线注意事项
  • Map集合、散列表、红黑树介绍
  • React16时代,该用什么姿势写 React ?
  • Redux 中间件分析
  • spring-boot List转Page
  • SQLServer插入数据
  • vue-router 实现分析
  • vuex 笔记整理
  • Vultr 教程目录
  • 构造函数(constructor)与原型链(prototype)关系
  • 讲清楚之javascript作用域
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 每天一个设计模式之命令模式
  • 提醒我喝水chrome插件开发指南
  • 怎么将电脑中的声音录制成WAV格式
  • 7行Python代码的人脸识别
  • 阿里云ACE认证学习知识点梳理
  • #define、const、typedef的差别
  • #NOIP 2014# day.1 T2 联合权值
  • (1)(1.13) SiK无线电高级配置(六)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (NSDate) 时间 (time )比较
  • (zt)最盛行的警世狂言(爆笑)
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .gitignore文件—git忽略文件
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET中GET与SET的用法
  • .net中调用windows performance记录性能信息