JavaScript Google地图坐标验证

guy*_*mfl 3 javascript google-maps

我有一个表单,你可以在地图上选择一个点,它填充lat和lon文本框,或者你可以自己输入坐标.

我需要添加验证以确保用户输入有效范围,但我不确定我是否拥有正确的RegEx.这是我正在使用的方法:

var regex_coords = "[-]?[0-9]*[.]{0,1}[0-9]";

// ...

valid_coords: function (number) {
if (number.match(regex_coords) && !isNaN(Number(number))) {
    $("#btnSaveResort").removeAttr("disabled");
    return true;
} else {
    $("#btnSaveResort").attr("disabled", "disabled");
    return false;
}
},
Run Code Online (Sandbox Code Playgroud)

无论我在文本框中输入什么,此函数都返回false.

有关更好方法的任何建议吗?

And*_*ach 13

纬度和经度具有不同的范围:纬度为(-90,90),经度为(-180,180),因此使用单个正则表达式并不真正起作用.您可能还想检查纬度是否可以在地图上绘制 - 这意味着它需要大约位于范围(-85,85)内.或者您可能希望将范围限制为包含特定区域的边界矩形.

为什么不明确测试范围?

function inrange(min,number,max){
    if ( !isNaN(number) && (number >= min) && (number <= max) ){
        return true;
    } else {
        return false;
    };
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据需要定制代码.假设您只想在纬度和经度都有效的情况下启用保存按钮.

valid_coords: function(number_lat,number_lng) {
    if (inrange(-90,number_lat,90) && inrange(-180,number_lng,180)) {
        $("#btnSaveResort").removeAttr("disabled");
        return true;
    }
    else {
        $("#btnSaveResort").attr("disabled","disabled");
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)