我有两个UITextField,用户可以在纬度和经度中输入,然后使用这些坐标在MKMapView上创建一个引脚。
我想找到一种方法来验证他们输入的值是实际的GPS坐标还是只是一堆垃圾。有没有办法做到这一点?
答案 0 :(得分:69)
答案 1 :(得分:4)
使用跟随纬度和经度的正则表达式,我们可以验证。
使用Objective-C中的转义字符:
Latitude RegEx:
@"^(\\+|-)?((\\d((\\.)|\\.\\d{1,6})?)|(0*?[0-8]\\d((\\.)|\\.\\d{1,6})?)|(0*?90((\\.)|\\.0{1,6})?))$"
经度RegEx:
@"^(\\+|-)?((\\d((\\.)|\\.\\d{1,6})?)|(0*?\\d\\d((\\.)|\\.\\d{1,6})?)|(0*?1[0-7]\\d((\\.)|\\.\\d{1,6})?)|(0*?180((\\.)|\\.0{1,6})?))$"
纬度和纬度的正常正则表达式经度:
Latitude RegEx:
^(\+|-)?((\d((\.)|\.\d{1,6})?)|(0*?[0-8]\d((\.)|\.\d{1,6})?)|(0*?90((\.)|\.0{1,6})?))$
经度RegEx:
^(\+|-)?((\d((\.)|\.\d{1,6})?)|(0*?\d\d((\.)|\.\d{1,6})?)|(0*?1[0-7]\d((\.)|\.\d{1,6})?)|(0*?180((\.)|\.0{1,6})?))$
答案 2 :(得分:3)
以下是在JavaScript中对其进行验证的功能。
<button (click)="onDeleteSelected()" [disabled] = "mflagDisableMoveTo.value.value"> Delete selected </button>
const isLatitude = num => isFinite(num) && Math.abs(num) <= 90;
答案 3 :(得分:0)
我会做这样的事情
numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *latitude = [numberFormatter numberFromString:theInputString];
if((latitude != nil)
{
//check it is within lat/long range
} else {
//not even a valid number, reject it
}
答案 4 :(得分:0)
在经历了很多StackOverflow问题之后,我认为这个问题是以一种简单直接的方式提出的,它描述了我在寻找AMZO:A Global Map Based Station for Reporting Aliens, Monsters, Zombies and Other Interesting Events(iPhone / iPad应用程序)的纬度/经度验证时所寻找的内容。无耻,我知道,但我认为我应该得到一个完整而优雅的答案/解决方案(适应克雷格上面的简短回答)!
我正在使用新的AlertController,它为纬度和经度文本输入调用以下每个验证。
- (BOOL) validateInput1: (NSString *) latitude
{
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *latitude1 = [numberFormatter numberFromString:latitude];
if (latitude1 != nil)
{
//check it is within lat/long range
if ((latitude1.floatValue > -90.0) && (latitude1.floatValue < 90.0)) {
NSLog(@"Hello Latitude!!!");
return 1;
}
} else {
//not even a valid number, reject it
return 0;
}
return 0;
}
- (BOOL) validateInput2: (NSString *) longitude
{
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *longitude1 = [numberFormatter numberFromString:longitude];
if (longitude1 != nil)
{
//check it is within lat/long range
if ((longitude1.floatValue > -180.0) && (longitude1.floatValue < 180.0)) {
NSLog(@"Hello Longitude!!!");
return 1;
}
} else {
//not even a valid number, reject it
return 0;
}
return 0;
}
答案 5 :(得分:0)
在Kotlin中,我们可以执行以下操作:
fun isValidLatLang(latitude: Double?, longitude: Double?): Boolean {
return latitude?.toInt() in -90 until 90 && longitude?.toInt() in -180 until 180
}
答案 6 :(得分:-1)
CLLocationCoordinate2D p1;
p1.latitude = [[punto latitud] doubleValue];
p1.longitude = [[punto longitud] doubleValue];
if (CLLocationCoordinate2DIsValid(p1))
{
[Mapa addAnnotation:annotationPoint];
}