服务端调用谷歌api根据经纬度计算时区

服务端调用谷歌api根据经纬度计算时区

 private String queryTimeZone(String longitude, String latitude)
    {
        log.info("queryTimeZone.BEGIN={}", JSON.toJSONString(System.currentTimeMillis()));
        String sendUrl = "https://maps.googleapis.com/maps/api/timezone/json";

        MultiValueMap<String,String> param = new LinkedMultiValueMap<>();
        param.add("location",latitude+","+longitude);
        param.add("timestamp", String.valueOf((System.currentTimeMillis()/1000)));
        param.add("key",Constants.KEY);

        ResponseEntity<String> exchange = exchange(sendUrl, param);
        String body = exchange.getBody();
        log.info("body={}", JSON.toJSONString(body));
        TimeZoneEntity timeZoneEntity = JSON.parseObject(body, TimeZoneEntity.class);
        log.info("queryTimeZone.END={}", JSON.toJSONString(System.currentTimeMillis()));
        return getTimeZone(timeZoneEntity.getTimeZoneId());
    }


 private  ResponseEntity<String> exchange(String sendUrl,MultiValueMap<String,String> param)
    {
        log.info("queryTimeZone.exchange begin={}", JSON.toJSONString(System.currentTimeMillis()));
        log.info("queryTimeZone.exchange sendUrl={}", JSON.toJSONString(sendUrl));
        log.info("queryTimeZone.exchange param={}", JSON.toJSONString(param));
        HttpHeaders headers = getHttpHeaders();
        HttpEntity<MultiValueMap<String,Integer>> entity = new HttpEntity<>(headers);
        log.info("queryTimeZone.exchange entity={}",JSON.toJSONString(entity));
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(sendUrl);
        URI uri = builder.queryParams(param).build().encode().toUri();
        log.info("queryTimeZone.exchange uri={}", JSON.toJSONString(uri));
        ResponseEntity<String> exchange = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);
        log.info("restTemplate.exchange={}",JSON.toJSONString(exchange));
        if(null == exchange || 200 != exchange.getStatusCodeValue()){
            throw new UnprocessableException(AdvertEnum.DATABASE_DATA_TRUNCATION);
        }
        log.info("queryTimeZone.exchange end={}", JSON.toJSONString(System.currentTimeMillis()));
        return exchange;
    }

  private HttpHeaders getHttpHeaders()
    {
        log.info("queryTimeZone.getHttpHeaders begin={}", JSON.toJSONString(System.currentTimeMillis()));
        HttpHeaders headers = new HttpHeaders();
//        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
//        headers.set("Authorization","Bearer 06a7376573353b3cdb62cacd3b4cc2ab");
        log.info("queryTimeZone.getHttpHeaders end={}", JSON.toJSONString(System.currentTimeMillis()));
        return  headers;
    }

 private String getTimeZone(String timeZoneId){
        log.info("getTimeZone.timeZoneId={}", JSON.toJSONString(timeZoneId));
        if(StringUtils.isEmpty(timeZoneId)){
            return null;
        }
        List<TimeZoneVO> timeZoneList = pileBaseAdapter.getTimeZoneList();
        if (CollectionUtils.isNotEmpty(timeZoneList)){
            for (TimeZoneVO timeZoneVO : timeZoneList) {
                for (String str : timeZoneVO.getZoneIdList()){
                    if (str.equals(timeZoneId)){
                        return timeZoneVO.getCode();
                        }
                    }
                }
            }
        return null;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值