package com.fastbee.common.utils.validate;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LongitudeLatitudeValidateUtils {

    /**
     * 判断字符串是不是经度或者纬度
     * @param str 经纬度字符串
     * @return true 或 false
     */
    public static boolean isLongitudeOrLatitude(String str) {
        String regex = "^[-+]?\\d{1,3}(\\.\\d+)?$"; // 正则表达式，匹配经度或纬度格式
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);

        // 如果字符串匹配正则表达式且值的范围在经纬度范围内，则返回 true
        return matcher.matches() && isValueInRange(str);
    }

    /**
     * 判断值是否在经纬度范围内
     * @param str 经纬度字符串表示的值
     * @return true 如果值在范围内，false 否则
     */
    public static boolean isValueInRange(String str) {
        try {
            double value = Double.parseDouble(str);
            return value >= -180 && value <= 180; // 经度范围
        } catch (NumberFormatException e) {
            // 字符串无法转换为数字，认为不在范围内
            return false;
        }
    }
}
