2012-09-17 21 views
5

Me gustaría hacer un cálculo de caja de límite geográfico en iOS. Puede ser aprox.Cómo calcular el cuadro delimitador de geografía en iOS?

parámetros de entrada:

ubicación actual (Ejemplo: 41.145495, -73.994901)

radio en metros: (Ejemplo: 2000)

salida requerida:

MinLong : (Ejemplo: 41.9995495)

MinLat: (Ejemplo: -74.004901)

MaxLong: (Ejemplo: 41.0005495)

MaxLat: (Ejemplo: -73.004901)

Requisito: Sin llamada de red

¿Ideas ? Mapkit/CoreLocation no parece ofrecer este tipo de cosas?

¿Algún otro SDK geográfico que podría usar?

Gracias

Respuesta

4

creo que se puede utilizar funciones MapKit estándar: MKCoordinateRegionMakeWithDistance, esto va a devolver un MKCoordinateRegion, que es en realidad un punto central (lat, lon) y los tramos en la dirección latitudal y longitudal en grados. Suma/resta la mitad del lapso de la latitud y la longitud, respectivamente, y tienes los valores que estás buscando.

CLLocationCoordinate2D centerCoord = CLLocationCoordinate2DMake(41.145495, −73.994901); 
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(centerCoord, 2000, 2000); 

double latMin = region.center.latitude - .5 * startRegion.span.latitudeDelta; 
double latMax = region.center.latitude + .5 * startRegion.span.latitudeDelta; 
double lonMin = region.center.longitude - .5 * startRegion.span.longitudeDelta; 
double lonMax = region.center.longitude + .5 * startRegion.span.longitudeDelta; 

Por cierto: este es el único representante de la longitud de los pequeños tramos, en el orden de un par de kilómetros. Para quote Apple:

latitudeDelta
La cantidad de distancia de norte a sur (medido en grados) para utilizar en el lapso. A diferencia de las distancias longitudinales, que varían en función de la latitud, un grado de latitud es de aproximadamente 111 kilómetros (69 millas) en todo momento.

longitudeDelta
La cantidad de distancia de este a oeste (medido en grados) para utilizar en el lapso. La cantidad de kilómetros recorridos por un rango de longitud varía según la latitud actual. Por ejemplo, un grado de longitud abarca una distancia de aproximadamente 111 kilómetros (69 millas) en el ecuador, pero se reduce a 0 kilómetros en los polos.

+0

Esto es algo problemático cuando sus superposiciones de ventana gráfica la marca 0 longitud –

+1

¿Cuál es el valor de startRegion en el cálculo anterior –

+0

@JamesBillingham o la ± 180 longitud ± 90 latitud marcas – wyu

Cuestiones relacionadas