|
@@ -5,6 +5,7 @@ import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
import com.chelvc.framework.base.model.Region;
|
|
|
+import com.chelvc.framework.base.util.ObjectUtils;
|
|
|
import com.chelvc.framework.base.util.StringUtils;
|
|
|
import com.chelvc.framework.location.Address;
|
|
|
import com.chelvc.framework.location.Area;
|
|
@@ -70,28 +71,28 @@ public class TencentLocationHandler implements LocationHandler {
|
|
|
log.warn("Tencent locate failed: {}", response);
|
|
|
return null;
|
|
|
}
|
|
|
- TencentLocationResponse.Location location = response.getResult().getLocation();
|
|
|
- if (!Region.isRegion(location.getAdcode())) {
|
|
|
- log.warn("Tencent locate adcode invalid: {}", location.getAdcode());
|
|
|
+ TencentLocationResponse.Position position = response.getResult().getPosition();
|
|
|
+ if (!Region.isRegion(position.getAdcode())) {
|
|
|
+ log.warn("Tencent locate adcode invalid: {}", position.getAdcode());
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
// 构建地址信息
|
|
|
- Region region = Objects.requireNonNull(Region.of(location.getAdcode()));
|
|
|
- Address address = Address.builder().id(region.getCode()).build();
|
|
|
- address.setName(
|
|
|
- Stream.of(location.getProvince(), location.getCity(), location.getDistrict())
|
|
|
- .filter(name -> !StringUtils.isEmpty(name)).collect(Collectors.joining("·"))
|
|
|
- );
|
|
|
- address.setProvince(
|
|
|
- Area.builder().id(region.getProvince().getCode()).name(location.getProvince()).build()
|
|
|
- );
|
|
|
+ Region region = Objects.requireNonNull(Region.of(position.getAdcode()));
|
|
|
+ TencentLocationResponse.Location location = response.getResult().getLocation();
|
|
|
+ Double longitude = ObjectUtils.ifNull(location, TencentLocationResponse.Location::getLongitude);
|
|
|
+ Double latitude = ObjectUtils.ifNull(location, TencentLocationResponse.Location::getLatitude);
|
|
|
+ Address address = Address.builder().id(region.getCode()).longitude(longitude).latitude(latitude).build();
|
|
|
+ address.setName(Stream.of(position.getProvince(), position.getCity(), position.getDistrict()).filter(
|
|
|
+ name -> !StringUtils.isEmpty(name)).collect(Collectors.joining("·")
|
|
|
+ ));
|
|
|
+ address.setProvince(Area.builder().id(region.getProvince().getCode()).name(position.getProvince()).build());
|
|
|
Region city = region.getCity();
|
|
|
if (city != null) {
|
|
|
- address.setCity(Area.builder().id(city.getCode()).name(location.getCity()).build());
|
|
|
+ address.setCity(Area.builder().id(city.getCode()).name(position.getCity()).build());
|
|
|
}
|
|
|
if (region.getType() == Region.Type.DISTRICT) {
|
|
|
- address.setDistrict(Area.builder().id(region.getCode()).name(location.getDistrict()).build());
|
|
|
+ address.setDistrict(Area.builder().id(region.getCode()).name(position.getDistrict()).build());
|
|
|
}
|
|
|
return address;
|
|
|
}
|