首页 > 其他分享 >百度地图开发api

百度地图开发api

时间:2023-05-10 19:34:29浏览次数:50  
标签:baidu http String 地图 private locationBean api 百度

 

获取百度地图ak:https://zhuanlan.zhihu.com/p/574521243

 

引入依赖:

<!-- 引入HttpClient依赖 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>

在yml中配置百度地图AK和地理编码

#百度地图 AK
baidu:
  ak: MKUZ0Oxzks86zaPstt
  url: http://api.map.baidu.com/geocoding/v3/?output=json&location=showLocation
  rurl: http://api.map.baidu.com/reverse_geocoding/v3/?output=json&coordtype=BD09&pois=1

创建返回地理位置信息实体类

实体类信息

package org.jeecg.modules.baidu;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author MYM_ZUOYAN
 * @version 2.0
 * @date 2021/4/9 15:03
 * 位置信息返回实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ReturnLocationBean implements Serializable {

    private static final Long serializableValue = 1L;


    /**
     * 地理位置
     */
    private String formattedAddress;


    /**
     * 经度
     */
    private Double lng;

    /**
     * 纬度
     */
    private Double lat;

    /**
     * 品级
     */
    private String level;
}

控制层信息

import org.springframework.web.bind.annotation.RestController;

@Slf4j
@Api(tags = "百度信息")
@RestController
@RequestMapping("/statistics/baidu")
public class BaiduController {
    /**
     * 百度 AK
     */
    @Value("${baidu.ak}")
    private String AK;

    /**
     * 地理编码 URL
     */
    @Value("${baidu.url}")
    private String ADDRESS_TO_LONGITUDEA_URL;

    /**
     * 逆地理编码 URL
     */
    @Value("${baidu.rurl}")
    private String LONGITUDE_TO_ADDRESS_URL;

    /**
     * @param address
     * 根据地理位置获取经纬度信息
     * @return
     */
    @AutoLog(value = "百度信息-根据地理位置获取经纬度信息")
    @ApiOperation(value = "百度信息-根据地理位置获取经纬度信息", notes = "百度信息-根据地理位置获取经纬度信息")
    @PostMapping("/addressToLngLat")
    public Result<?> addressToLngLat(String address) {

        if (StringUtils.isBlank(address)) {
            return Result.error("地理位置不能为空!");
        } else {
            String url = ADDRESS_TO_LONGITUDEA_URL + "&ak=" + AK + "&address=" + address;
            // 创建默认http连接
            HttpClient client = HttpClients.createDefault();

            //创建一个post请求
            HttpPost post = new HttpPost(url);

            try {
                // 用http连接去执行get请求并且获得http响应
                HttpResponse response = client.execute(post);

                // 从response中取到响实体
                HttpEntity entity = response.getEntity();

                // 把响应实体转成文本
                String html = EntityUtils.toString(entity);

                //转Json实体
                JSONObject jsonObject = JSON.parseObject(html);

                //地理信息实体封装
                ReturnLocationBean locationBean = new ReturnLocationBean();
                locationBean.setLng(jsonObject.getJSONObject("result").getJSONObject("location").getDouble("lng"));
                locationBean.setLat(jsonObject.getJSONObject("result").getJSONObject("location").getDouble("lat"));
                locationBean.setLevel(jsonObject.getJSONObject("result").getString("level"));
                locationBean.setFormattedAddress(address);

                return Result.OK(locationBean);
            } catch (Exception e) {
                return Result.error("查询失败!");
            }
        }
    }



    /**
     * 逆地理编码,根据经纬度获取地理位置
     * @param lat
     * @param lng
     * @return
     */
    @AutoLog(value = "百度信息-根据经纬度获取地理位置")
    @ApiOperation(value = "百度信息-根据经纬度获取地理位置", notes = "百度信息-根据经纬度获取地理位置")
    @PostMapping("/longitudeToAddress")
    public Result<?> longitudeToAddress(float lat, float lng) {
        String url = LONGITUDE_TO_ADDRESS_URL + "&ak=" + AK + "&location=" + lat + "," + lng;
        // 创建默认http连接
        HttpClient client = HttpClients.createDefault();

        // 创建一个post请求
        HttpPost post = new HttpPost(url);

        try {
            // 用http连接去执行get请求并且获得http响应
            HttpResponse response = client.execute(post);

            // 从response中取到响实体
            HttpEntity entity = response.getEntity();

            // 把响应实体转成文本
            String html = EntityUtils.toString(entity);

            //转Json实体
            JSONObject jsonObject = JSON.parseObject(html);

            //地理信息实体封装
            ReturnLocationBean locationBean = new ReturnLocationBean();
            locationBean.setLng((double) lng);
            locationBean.setLat((double) lat);
            locationBean.setFormattedAddress(jsonObject.getJSONObject("result").getString("formatted_address"));

            return Result.OK(locationBean);
        } catch (Exception e) {
            return Result.error("查询失败!");
        }
    }
}

 

标签:baidu,http,String,地图,private,locationBean,api,百度
From: https://www.cnblogs.com/chong-zuo3322/p/17389081.html

相关文章

  • 本地图文直接复制到富文本编辑器中
    ​ 当前功能基于PHP,其它语言流程大抵相同。大概流程:1.将docx文件上传到服务器中2.使用PHPoffice/PHPword实现将word转换为HTML3.将HTML代码返回并赋值到编辑器中 1编辑器配置修改1.1新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /*......
  • 获取采购信息记录函数BAPI_INFORECORD_GETLIST
    DATA:lt_purchTYPETABLEOFbapieine,lt_returnTYPETABLEOFbapireturn.FIELD-SYMBOLS:<fs_return>TYPEbapireturn,<fs_purch>TYPEbapieine.CALLFUNCTION'BAPI_INFORECORD_GETLIST'EXPORTING......
  • 百度最新面试题集锦
    1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7)=4,可以证明最少需要4次运算n=7n-16n/23n-12n/21要求:实现函数(实现尽可能高效)intfunc(unsignintn);n为输入,返回最小的运算次......
  • 太懂用户了!Apipost这次更新属实把我拿捏了
    Apipost最近更新了v7.1.4版本简直是功能大杀器啊,一堆亮点!喂,postman?别给我打电话了,我怕Apipost误会!咱就是说:一次更新这么多功能谁见了不得用两下?更何况是我这么喜欢折腾的。少废话,先看东西!Apipost也是把颜色玩明白了,一下子支持了7种主题色选择,哥们最喜欢绿色,而且还非常贴心的做......
  • 全网商品搜索|1688|Taobao|天猫|京东api接口展示示例
    ​电商API(ApplicationProgrammingInterface,应用程序编程接口)是指电商平台开放的一组数据接口,通过这些接口可以实现对电商平台商品、订单、物流等信息进行访问、查询、修改、删除等操作。电商API涉及到的主要数据包括:1.商品数据:包括商品名称、价格、库存、分类、描述、图片......
  • 调用openAI API出现429错误
    如果不是请求太频繁的话,请检查一下自己账号Usage的期限 openAI给每个账号18美刀、三个月的免费用量,所以过期了就会报429错误......
  • 本地图文直接复制到Web编辑器中
    ​ 这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下)<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@     page contentType="text/html;cha......
  • 百度地图绘制地区的棱柱效果-定位-自定义点-文本标记-信息弹窗
    @目录百度地图webgl使用自定义地图样式地区镂面棱柱效果绘制点信息以及信息弹窗百度地图webgl使用在项目的index.html中引入<scripttype="text/javascript"src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=你的AK秘钥"></script>注意,百度webgl的引入和百度地图的引入......
  • 本地图文直接复制到HTML编辑器中
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪......
  • 景点API支持查询携程旅游门票景点详情
    门票景点详情,景点api支持查询携程旅游门票景点详情。接口名称:景点api接口平台:开放api接口地址:http://api2.juheapi.com/xiecheng/senicspot/ticket/info支持格式:JSON请求方式:HTTP POST/GET请求示例:http://api2.juheapi.com/xiecheng/senicspot/ticket/info?scenicspotid=234&key=......