2012-09-17 5 views
5

Ich möchte eine geografische Bounding-Box Berechnung in iOS machen. Es kann ungefähr sein.Wie Geografie Bounding Box in iOS berechnen?

Eingabeparameter:

Aktueller Standort (Beispiel: 41,145495, -73,994901)

Radius in Metern: (Beispiel: 2000)

Erforderliche Leistung:

MinLong : (Beispiel: 41.9995495)

MinLat: (Beispiel: -74,004901)

MaxLong: (Beispiel: 41,0005495)

MAXLAT: (Beispiel: -73,004901)

Voraussetzung: No Network Anruf

Irgendwelche Ideen ? Mapkit/CoreLocation scheint so etwas nicht zu bieten?

Irgendwelche anderen Geographic SDK, die ich verwenden könnte?

Dank

Antwort

4

Ich glaube, Sie Standard MapKit Funktionen verwenden können: MKCoordinateRegionMakeWithDistance, ist dies ein MKCoordinateRegion zurückkehren, was wirklich Punkt nur ein Zentrum ist (lat, lon) und die Spannweiten in der latitudal und Längenendbereich Richtung in Grad. Addieren/subtrahieren Sie die Hälfte der Spanne von der geografischen Breite bzw. Länge und Sie haben die Werte, nach denen Sie suchen.

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; 

By the way: Dies ist nur repräsentativ für die Länge für kleine Spannweiten in der Größenordnung von ein paar Kilometer. Um quote Apple:

latitudeDelta
Die Menge der Nord-Süd-Strecke (gemessen in Grad) für die Spanne zu verwenden. Im Gegensatz zu longitudinalen Distanzen, die je nach Breitengrad variieren, ist ein Breitengrad immer ungefähr 111 Kilometer (69 Meilen) lang.

longitudeDelta
Die Menge der Ost-West-Abstand (gemessen in Grad) für die Spanne zu verwenden. Die Anzahl der Kilometer, die von einem Längenbereich umfasst werden, variiert basierend auf dem aktuellen Breitengrad. Zum Beispiel überspannt ein Längengrad eine Länge von etwa 111 Kilometern am Äquator, schrumpft aber an den Polen auf 0 Kilometer.

+0

Diese etwas problematisch ist, wenn Ihr Ansichtsfenster Überlappungen die 0 Längengradmarkierung –

+1

Welchen Wert hat startRegion in der obigen Berechnung –

+0

@JamesBillingham oder die ± 180 Länge ± 90 Breitengradmarkierungen – wyu