package com.dji.sdk.cloudapi.map; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; /** * @author sean * @version 0.2 * @date 2021/11/30 */ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.EXISTING_PROPERTY, defaultImpl = ElementGeometryType.class) @JsonSubTypes({ @JsonSubTypes.Type(value = ElementCircleGeometry.class, name = "Circle"), @JsonSubTypes.Type(value = ElementPointGeometry.class, name = "Point"), @JsonSubTypes.Type(value = ElementLineStringGeometry.class, name = "LineString"), @JsonSubTypes.Type(value = ElementPolygonGeometry.class, name = "Polygon") }) @Schema(oneOf = {ElementPointGeometry.class, ElementLineStringGeometry.class, ElementPolygonGeometry.class}) public abstract class ElementGeometryType { private String type; ElementGeometryType(String type) { this.type = type; } public ElementGeometryType() { } public String getType() { return type; } /** * Convert coordinate data into objects and then add them to the collection. * @return */ public abstract List convertToList(); /** * Converts coordinates in a collection of objects to a specific type. * @param coordinateList */ public abstract void adapterCoordinateType(List coordinateList); }