package com.atmob.map_amap_android.bean;

import androidx.annotation.IntDef;
import androidx.annotation.NonNull;

import com.google.gson.annotations.SerializedName;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

public class MakerInfo {


    @SerializedName("id")
    private String id;

    @SerializedName("markerName")
    private String markerName;

    @SerializedName("longitude")
    private double longitude;

    @SerializedName("latitude")
    private double latitude;

    @MarkerType
    @SerializedName("markerType")
    private int markerType;


    @SerializedName("isSelected")
    private boolean isSelected;

    @SerializedName("customAvatarUrl")
    private String customAvatarUrl;

    @SerializedName("tags")
    private Object tags;

    public Object getTags() {
        return tags;
    }

    public void setTags(Object tags) {
        this.tags = tags;
    }

    public String getCustomAvatarUrl() {
        return customAvatarUrl;
    }

    public void setCustomAvatarUrl(String customAvatarUrl) {
        this.customAvatarUrl = customAvatarUrl;
    }

    public boolean isSelected() {
        return isSelected;
    }

    public void setSelected(boolean selected) {
        isSelected = selected;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getLatitude() {
        return latitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }

    public String getMarkerName() {
        return markerName;
    }

    public void setMarkerName(String markerName) {
        this.markerName = markerName;
    }

    public int getMarkerType() {
        return markerType;
    }

    public void setMarkerType(int markerType) {
        this.markerType = markerType;
    }

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({MarkerType.MINE, MarkerType.FRIEND, MarkerType.TRACE_START_POINT, MarkerType.TRACE_END_FRIEND_POINT, MarkerType.TRACE_END_MINE_POINT, MarkerType.TRACE_POPUP_POINT, MarkerType.TRACE_PASSING_POINT, MarkerType.TRACE_ERROR_POINT})
    public @interface MarkerType {
        int MINE = 1;
        int FRIEND = 2;
        int TRACE_START_POINT = 3;
        int TRACE_END_FRIEND_POINT = 4;
        int TRACE_END_MINE_POINT = 5;
        int TRACE_POPUP_POINT = 6;
        int TRACE_PASSING_POINT = 7;
        int TRACE_ERROR_POINT = 8;
    }


    @NonNull
    @Override
    public String toString() {
        return "MakerInfo{" +
                "id='" + id + '\'' +
                ", markerName='" + markerName + '\'' +
                ", longitude=" + longitude +
                ", latitude=" + latitude +
                ", markerType=" + markerType +
                ", isSelected=" + isSelected +
                ", customAvatarUrl='" + customAvatarUrl + '\'' +
                ", tags=" + tags +
                '}';
    }
}
