package com.ruoyi.common.core.annotation;

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

/**
 * 自定义地理坐标转换注解
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CoordinateChange {

    /**
     * 要转换属性名
     */
    String attributeName();

    /**
     * 原坐标系类型
     */
    CoordinateType origin() default CoordinateType.WGS84;

    /**
     * 目标坐标系类型
     */
    CoordinateType target() default CoordinateType.GCJ02;

    /**
     * 要处理对象类型是否为集合
     */
    CollectionFlag isCollection();

    public enum CoordinateType{

        /**
         * WGS84坐标系：即地球坐标系，国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,
         * 谷歌地图采用的是WGS84地理坐标系（中国范围除外）;
         */
        WGS84(0),
        /**
         * GCJ02坐标系：即火星坐标系，是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
         * 高德地图、腾讯地图、谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系;
         */
        GCJ02(1),
        /**
         * 即百度坐标系，GCJ02坐标系经加密后的坐标系;
         */
        BD09(2);

        private int type;

        CoordinateType(int type){
            this.type = type;
        }

        public int type(){
            return this.type;
        }
    }

    public enum CollectionFlag{

        // 是集合
        IS_COLLECTION(1),
        // 不是集合
        NOT_COLLECTION(0);

        private int flag;

        CollectionFlag(int flag){
            this.flag = flag;
        }

        public int flag(){
            return this.flag;
        }
    }
}
