2 Stimmen

Suche nach umliegenden Vororten anhand von Breiten- und Längengraden mit Objective C

Ich muss Objekte von Interesse in der Nähe eines bestimmten Breitengrads/Längengrads identifizieren. Ich habe zwei Gruppen von Objekten in Core Data gespeichert:

PostalArea
- latitude
- longitude
- postcode

Store
- name 
- latitude
- longitude

Ich muss in der Lage sein, einen Datensatz aus der PostalArea Tabelle und suchen Sie dann nach Geschäften in der Nähe.

Die meisten der Beispiele, die ich gefunden habe, basieren auf SQL. Ich hoffe, jemand kann mich mit immer diese Arbeit mit Core Data unterstützen. Im Idealfall möchte ich die Ergebnismenge auf eine bestimmte Anzahl (z. B. 10) begrenzen, im Gegensatz zur Begrenzung auf Basis der Entfernung.

EDIT: Es ist möglich, alle Datensätze in den Speicher zu ziehen, falls erforderlich.

1voto

Marcus S. Zarra Punkte 46405

Die gebräuchlichste Lösung besteht darin, einen Minimal- und Maximalwert für Breiten- und Längengrad zu bestimmen und dann ein Prädikat auf der Grundlage dieser Werte zu erstellen. Das würde die Suche auf einen Kreis eingrenzen, und mit den verbleibenden Objekten im Speicher kann man dann nach der größten Nähe zum Punkt sortieren.

Update

Sobald du die Objekte im Gedächtnis hast, kannst du mit ihnen einige lustige Dinge machen. Zum Beispiel könnten Sie einen transienten Wert namens "currentPoint" haben und Sie könnten dann KVO auf das resultierende Array wie:

[resultingArray setValue:aPoint forKey:@"currentPoint"];

Dann könnten Sie eine Methode haben, die die Entfernung von diesem Punkt zurückgibt, nach der Sie sortieren können.

Das ist ein Beispiel, ich bin sicher, dass es noch andere Möglichkeiten gibt, aber die allgemeine Idee ist, eine Teilmenge von Orten in den Speicher zu bekommen, so dass Sie dann die Entfernung berechnen und schließlich sortieren können.

0voto

Charlie Martin Punkte 106684

Was halten Sie von der Option eines REST-Dienstes? Wenn Sie die Google-APIs verwenden, können Sie genau diese Dinge abfragen. Es gibt zahlreiche JSON-Schnittstellen für Objective C.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X