todos sacar saber para paises los longitud latitud google geograficas fotos earth coordenadas con como buscar app iphone gps mkmapview coordinates mkannotation

iphone - sacar - Cómo validar latitud y longitud.



latitud y longitud de todos los paises (5)

Tengo dos UITextFields que los usuarios pueden ingresar en latitud y longitud, estas coordenadas se utilizan para crear un pin en un MKMapView.

Quiero encontrar una manera de validar si los valores que ingresan son coordenadas reales de GPS o solo una carga de basura. ¿Hay alguna manera de hacer esto?


Después de pasar por muchas preguntas de , pensé que esta pregunta se hizo de una manera simple y directa que describía lo que estaba buscando para resolver mi validación de latitud / longitud para AMZO: una estación basada en un mapa global para reportar alienígenas, monstruos y zombis. y otros eventos interesantes (aplicación iPhone / iPad). Sin vergüenza, lo sé, pero creo que lo merezco por encontrar una solución / solución completa y elegante (adaptando la breve respuesta de Craig más arriba).

Estoy usando el nuevo AlertController que llama a cada una de las siguientes validaciones para las entradas de texto de latitud y longitud.

- (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; }


Haría algo como esto

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 }



Usando expresiones regulares de seguimiento de latitud y longitud, podemos validar.

Con personajes de escape en Objective-C:

Latitud RegEx:

@"^(//+|-)?((//d((//.)|//.//d{1,6})?)|(0*?[0-8]//d((//.)|//.//d{1,6})?)|(0*?90((//.)|//.0{1,6})?))$"

RegEx de longitud:

@"^(//+|-)?((//d((//.)|//.//d{1,6})?)|(0*?//d//d((//.)|//.//d{1,6})?)|(0*?1[0-7]//d((//.)|//.//d{1,6})?)|(0*?180((//.)|//.0{1,6})?))$"

Expresiones regulares normales para latitud y longitud:

Latitud RegEx:

^(/+|-)?((/d((/.)|/./d{1,6})?)|(0*?[0-8]/d((/.)|/./d{1,6})?)|(0*?90((/.)|/.0{1,6})?))$

RegEx de longitud:

^(/+|-)?((/d((/.)|/./d{1,6})?)|(0*?/d/d((/.)|/./d{1,6})?)|(0*?1[0-7]/d((/.)|/./d{1,6})?)|(0*?180((/.)|/.0{1,6})?))$


CLLocationCoordinate2D p1; p1.latitude = [[punto latitud] doubleValue]; p1.longitude = [[punto longitud] doubleValue]; if (CLLocationCoordinate2DIsValid(p1)) { [Mapa addAnnotation:annotationPoint]; }