2012-09-17 23 views
5

Mi piacerebbe fare un calcolo del riquadro di delimitazione geografica in iOS. Può essere aprox.Come calcolare il riquadro di delimitazione della geografia in iOS?

Parametri di ingresso:

posizione corrente (esempio: 41.145495, -73,994901)

Raggio in metri: (Esempio: 2000)

Uscita Richiesta:

MinLong : (Esempio: 41.9995495)

MinLat: (Esempio: -74,004901)

MaxLong: (Esempio: 41,0,005495 ​​millions)

MaxLat: (Esempio: -73,004901)

Requisito: No Network chiamata

Tutte le idee ? Mapkit/CoreLocation non sembra offrire questo tipo di cose?

Qualsiasi altro SDK geografico che potrei usare?

Grazie

risposta

4

penso che è possibile utilizzare le funzioni MapKit standard: MKCoordinateRegionMakeWithDistance, questo restituirà un MKCoordinateRegion, che è in realtà solo un punto centrale (lat, lon) e le campate nella direzione latitudal e longitudal in gradi. Aggiungi/sottrae la metà dello span rispettivamente da latitudine e longitudine e hai i valori che stai cercando.

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; 

A proposito: questo è solo rappresentativo per la longitudine per campate piccole, nell'ordine di un paio di chilometri. Per quote Apple:

latitudeDelta
La quantità di nord-sud distanza (misurata in gradi) da utilizzare per la campata. A differenza delle distanze longitudinali, che variano in base alla latitudine, un grado di latitudine è di circa 111 chilometri (69 miglia) in ogni momento.

longitudeDelta
La quantità di est-to-ovest distanza (misurata in gradi) da utilizzare per la campata. Il numero di chilometri percorsi da un intervallo di longitudine varia in base alla latitudine corrente. Ad esempio, un grado di longitudine si estende su una distanza di circa 111 chilometri (69 miglia) all'equatore ma si riduce a 0 chilometri ai poli.

+0

Questo è un po' problematico quando i sovrapposizioni viewport il segno di longitudine 0 –

+1

Qual è il valore di startRegion nel calcolo di cui sopra –

+0

@JamesBillingham o ± 180 longitudine ± 90 segni di latitudine – wyu