2009-05-07 8 views
0

J'ai ma position actuelle corrigée via CoreLocation. Maintenant, je veux obtenir ces emplacements (à partir d'une base de données existante), qui sont dans le proche (environ 100 pieds) de celui-ci.iPhone 3G: Comment afficher les emplacements autour d'un point fixe?

Comment démarrer?


Mise à jour: Voici une mise en œuvre de la formule Haversine: http://www.jaimerios.com/?p=39 (très utile)

+1

S'agit-il plus d'une question "Comment calculer les distances entre les points" que d'une question iPhone/Objective-C spécifique? – rjstelling

+0

Non, j'ai pensé à la façon de résoudre ce problème avec CoreLocationo ;-) – Stefan

+0

Good one rijstellin. Parce que si c'est le cas, alors Paul Betts a votre réponse, Stefan. – Kriem

Répondre

7

CLLocation fournit une méthode pour cela:

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

Vous aurez besoin d'avoir la latitude et la longitude de chacun de vos dossiers, et puis trier par la distance renvoyée par cette méthode.

-1

géométrie haute école FTW:

dist = sqrt(pow((x2-x1), 2) + pow((y2-y1), 2)) 

L'une des choses que vous pouvez faire pour vous faciliter la tâche SQL Query, est de diviser la carte en "tiles", c'est-à-dire une zone de 2km x 2km, de sorte que vous puissiez interroger la tuile, puis parcourir les résultats en utilisant cette formule.

+0

Mais je ne peux pas appliquer cette formule à chacun de mes emplacements (c'est une base de données avec environ 3500 emplacements). J'ai donc pensé qu'il y aurait une méthode conviviale, qui est incluse dans CL. – Stefan

+0

Ce n'est pas un bon moyen car la terre est sphérique et vous effectuez une mesure de ligne directe pour le point A au point b. –

+0

Il veut savoir des choses qui sont à moins de 100 pieds de l'emplacement actuel, je ne pense pas que vous ayez à vous soucier de la distorsion sphérique ici :) –