上下班定时打卡之自动获取经纬度

作者:神秘网友 发布时间:2020-09-09 09:14:03

上下班定时打卡之自动获取经纬度

上下班定时打卡之自动获取经纬度

点击▲关注 “爪哇笔记”   给公众号标星置顶

更多精彩 第一时间直达

上下班定时打卡之自动获取经纬度

群里小伙伴们说自己手撸经纬度太麻烦了,还得自己去查,太鸡儿浪费时间了。今天给大家分享一个新技能,地理编码服务,用户可通过该功能,将结构化地址(省/市/区/街道/门牌号)解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。

首先需要注册一个百度开放平台的账号,百度这个是一网通的,只要你注册过贴吧账号,基本都可以直接登录。

上下班定时打卡之自动获取经纬度

上下班定时打卡之自动获取经纬度

一般获取到应用AK就可以了,如果启用SN校验方式,还需要获取SN校验码。

百度的说明文档挺全,各种请求参数、返回结果参数描述的十分详细,基本上不会浪费大家很多时间。撸主撸了一个工具类,大家也可以直接使用。

/**
 * @Description
 * @Author 爪哇笔记
 * @Date 2022/9/4
 * 参考:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
 */
public class BaiDuMapUtils {

    static Logger logger = LoggerFactory.getLogger(BaiDuMapUtils.class);

    static String AK = "***************";

    static String SN =""***************;

    static String STATUS ="status";

    public static void main(String[] args) {
        String dom = "北京王府井";
        System.out.println("'" + dom + "'的经纬度为:" + getCoordinate(dom));
    }

    /**
     * 调用百度地图API根据地址,获取坐标
     * @param address
     * @return
     */
    public static Result getCoordinate(String address) {
        if (address != null && !"".equals(address)) {
            address = address.replaceAll("\\s*", "").replace("#", "栋");
            String url = "http://api.map.baidu.com/geocoding/v3";
            RestTemplate client = new RestTemplate();
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
            MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
            params.add("address",address);
            params.add("output","json");
            params.add("ak",AK);
            params.add("sn",SN);
            HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
            ResponseEntity<String> response = client.exchange(url, HttpMethod.POST, requestEntity, String.class);
            String json = response.getBody();
            logger.info("位置信息:{}",json);
            if (StringUtils.isNotBlank(json)) {
                JSONObject obj = JSONObject.parseObject(json);
                if (SystemConstant.CODE_0.equals(obj.getString(STATUS))) {
                    /**
                     * 经度
                     */
                    double longitude = obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
                    /**
                     * 纬度
                     */
                    double latitude = obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
                    DecimalFormat df = new DecimalFormat("#.######");
                    Map<String, Object> map = new HashMap<>(6);
                    map.put("longitude",df.format(longitude));
                    map.put("latitude",df.format(latitude));
                    return Result.ok(map);
                }else{
                    return Result.error(obj.getString("message"));
                }
            }else{
                return Result.error();
            }
        }else{
            return Result.error();
        }
    }
}

效果演示:

上下班定时打卡之自动获取经纬度

版权申明:源码功能来源于网络二次开发,仅供学习交流之用,请勿用于用于商业用途。如有侵权,请联系我们删除。

上下班定时打卡之自动获取经纬度

提高微服务安全性的11个方法

分布式秒杀实战之订单数据分表

Java后台管理系统+小程序,开箱即用

100万+的妹子图微服务版本终于开源了

上下班定时打卡之自动获取经纬度

▲加小编进群,暗号签到

上下班定时打卡之自动获取经纬度相关教程

  1. 【9月打卡~Leetcode每日一题】77. 组合(难度:中等)
  2. Vue组件里定时器销毁问题
  3. 【打卡】Java学习(二)
  4. Windows定时删除某天前文件的批处理脚本
  5. Dimple在左耳听风ARTS打卡(十)
  6. [学习打卡]Python基础入门(二)
  7. Linux免密ssh登录及远程定时备份文件
  8. zabbix企业应用之定时获取监控数据做报表