com.itxiaoer.commons.lbs.baidu.BaiduLibsServiceImpl Maven / Gradle / Ivy
The newest version!
package com.itxiaoer.commons.lbs.baidu;
import com.itxiaoer.commons.core.json.JsonUtil;
import com.itxiaoer.commons.lbs.Constants;
import com.itxiaoer.commons.lbs.LbsService;
import com.itxiaoer.commons.lbs.Location;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**
* @author : liuyk
*/
@Slf4j
public class BaiduLibsServiceImpl implements LbsService {
@Resource
private RestTemplate restTemplate;
@Resource
private BaiduConfig baiduConfig;
@Override
public Optional byLocation(String lng, String lat) {
String url = String.format(Constants.Baidu.LOCATION_URL, lat, lng, baiduConfig.getAk());
log.debug("url : {} ", url);
ResponseEntity responseEntity = this.restTemplate.getForEntity(url, String.class);
log.debug("response : {} ", responseEntity);
Optional optional = JsonUtil.toBean(responseEntity.getBody(), LinkedHashMap.class);
if (optional.isPresent()) {
LinkedHashMap linkedHashMap = optional.get();
// success
if (Objects.equals(Constants.Baidu.SUCCESS_STATUS, String.valueOf(linkedHashMap.get(Constants.Baidu.KEY_OF_STATUS)))) {
LinkedHashMap result = (LinkedHashMap) linkedHashMap.get(Constants.Baidu.KEY_OF_RESULT);
LinkedHashMap location = (LinkedHashMap) result.get(Constants.Baidu.KEY_OF_LOCATION);
String address = String.valueOf(result.get(Constants.Baidu.KEY_FORMATTED_ADDRESS));
return Optional.of(new Location(address, "", String.valueOf(location.get(Constants.Baidu.KEY_OF_LNG)), String.valueOf(location.get(Constants.Baidu.KEY_OF_LAT))));
}
}
return Optional.empty();
}
@Override
public Optional byAddress(String address) {
String url = String.format(Constants.Baidu.ADDRESS_URL, address, baiduConfig.getAk());
log.debug("url : {} ", url);
ResponseEntity responseEntity = this.restTemplate.getForEntity(url, String.class);
log.debug("response : {} ", responseEntity);
Optional optional = JsonUtil.toBean(responseEntity.getBody(), LinkedHashMap.class);
if (optional.isPresent()) {
LinkedHashMap linkedHashMap = optional.get();
// success
if (Objects.equals(Constants.Baidu.SUCCESS_STATUS, String.valueOf(linkedHashMap.get(Constants.Baidu.KEY_OF_STATUS)))) {
LinkedHashMap result = (LinkedHashMap) linkedHashMap.get(Constants.Baidu.KEY_OF_RESULT);
LinkedHashMap locationMap = (LinkedHashMap) result.get(Constants.Baidu.KEY_OF_LOCATION);
return Optional.of(new Location(address, String.valueOf(result.get(Constants.Baidu.KEY_OF_LEVEL)), String.valueOf(locationMap.get(Constants.Baidu.KEY_OF_LNG)), String.valueOf(locationMap.get(Constants.Baidu.KEY_OF_LAT))));
}
}
return Optional.empty();
}
@Override
@SuppressWarnings("unchecked")
public Optional covert(String lng, String lat, String type) {
String url = String.format(Constants.Baidu.LOCATION_COVERT_URL, lng, lat, type, baiduConfig.getAk());
log.debug("url : {} ", url);
ResponseEntity responseEntity = new RestTemplate().getForEntity(url, String.class);
log.debug("response : {} ", responseEntity);
Optional optional = JsonUtil.toBean(responseEntity.getBody(), LinkedHashMap.class);
if (optional.isPresent()) {
LinkedHashMap linkedHashMap = optional.get();
// success
if (Objects.equals(Constants.Baidu.SUCCESS_STATUS, String.valueOf(linkedHashMap.get(Constants.Baidu.KEY_OF_STATUS)))) {
List result = (List) linkedHashMap.get(Constants.Baidu.KEY_OF_RESULT);
Location location = new Location();
Object x = result.get(0).get("x");
Object y = result.get(0).get("y");
location.setLng(String.valueOf(x));
location.setLat(String.valueOf(y));
// query address
Optional address = this.byLocation(location.getLng(), location.getLat());
//
location.setAddress(address.map(Location::getAddress).orElse("未知"));
return Optional.of(location);
}
}
return Optional.empty();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy