@Api(tags = "地理位置查询")
@RestController
@RequestMapping("/location")
@Slf4j
public class LocationController {
@Resource
LocationService locationService;
@Value("${location:China}")
private String location;
@ApiOperation("根据经纬度获取地址位置信息")
@GetMapping("/query")
public Result<LocationVo> getLocation(@ApiParam("经度") @RequestParam(value = "longitude") String longitude,
@ApiParam("纬度") @RequestParam(value = "latitude") String latitude) {
if (!Constants.CHINA.equals(location)) {
return Result.ofSucceed(locationService.getLocationByGoogle(longitude, latitude));
}
return Result.ofSucceed(locationService.getLocationByBaiDu(longitude, latitude));
}
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class LocationVo implements Serializable {
private static final long serialVersionUID = -6081554534745753000L;
/**
* 三级行政区
*/
private String district;
/**
* 二级行政区
*/
private String city;
/**
* 一级行政区
*/
private String state;
/**
* 州/省
*/
private String region;
/**
* 国家代号
*/
private String countryCode;
}
@Override
public LocationVo getLocationByGoogle(String longitude, String latitude) {
String baseUrl = "https://maps.google.com/maps/api/geocode/json?latlng=" + latitude
+ "," + longitude + "&sensor=true&key=AIzaSyC3FIB71mZOZpZlzYmpK__7PdEHMEzxpQ0";
String exchange = HttpUtil.get(baseUrl);
return formatGoogleResult(exchange);
}
@Override
public LocationVo getLocationByBaiDu(String longitude, String latitude) {
String baseUrl = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=abg5M3VYGpbAoUML5iARlWEGLp6SliDT&output=json&location=" + latitude
+ "," + longitude;
String exchange = HttpUtil.get(baseUrl);
JSONObject locationJson = (JSONObject) JSON.parse(exchange);
JSONObject result = (JSONObject) locationJson.get("result");
JSONObject addressComponent = (JSONObject) result.get("addressComponent");
String state = addressComponent.getString("province");
String city = addressComponent.getString("city");
String district = addressComponent.getString("district");
return new LocationVo(district, city, state,null, null);
}
根据经纬度获取地址位置信息
最新推荐文章于 2024-07-25 17:16:25 发布