2011-07-26 10 views
6

Mam wbudowanej bazy danych w moim app, który ma wszystkie szerokości i długości geograficznej niektórych zainteresowanych punktów i muszę wiedzieć dystans od tych punktów (dostać moją pozycję za pomocą GPS). Mój problem jest: Mam tylko zorientowali się, że SQLite nie można obliczyć odległość przy użyciu kwerendy, które mam, ponieważ nie oblicza funkcji trygonometrycznych (sin, cos ...). Próbowałem uniknąć obliczania tych odległości programowo przy użyciu tego zapytania:iPhone - SQLite odległość przez długość i szerokość geograficzna

NSLog(@"SELECT ((ACOS(SIN(%@ * PI()/180) * SIN(lat * PI()/180) + COS(%@ * PI()/180) * COS(lat * PI()/180) * COS((%@ – lon) * PI()/180)) * 180/PI()) * 60 * 1.1515) AS `distance` FROM `members` HAVING `distance`<=’1000′ ORDER BY `distance`", Latitude,Latitude, Longitude); 

Czy ktoś ma rozwiązanie?

Pozdrawiam!

Odpowiedz

9

Zrób to w Objective C

ten facet miał ten sam problem: http://www.thismuchiknow.co.uk/?p=71

+0

Świetnie. Wielkie dzięki! – Claudio

+3

Związany z odpowiedzią jest naprawdę dobry. Definiowanie funkcji c wywoływanej z sqlite w celu obliczenia odległości. Jest szybki i działa. Mogę tylko sprecyzować twoje wyszukiwanie za pomocą instrukcji BETWEEN. Używam tego: select * from miejscach, gdzie łac pomiędzy% F i% F i lon pomiędzy% F i% f ORDER BY odległości (szer,% f,% f) Limit 25 –

+0

@KennyWinker Proszę podać wartość% F –

0

Tak, można zrobić proste zapytanie w oparciu o prostokąta wokół lokalizacji, a następnie użyć formuły haversine aby obliczyć dokładna odległość.

Zaletą jest to, że masz do wykorzystania indeksów na stole SQLite.

Więcej informacji na temat formuły haversine: http://en.wikipedia.org/wiki/Haversine_formula

+0

Czy masz jakiś związek z przykładu? – Claudio

Powiązane problemy