Цель C - iPhone, сравнивающий 2 CLLocations / GPS-координаты - PullRequest
1 голос
/ 21 марта 2010

Хорошо, благодаря Клаусу Броху я немного продвинулся в сравнении двух GPS-местоположений. Мне нужно иметь возможность сказать «ЕСЛИ текущее местоположение РАВНО (любая позиция GPS из списка), ТО делать что-то

Мой код на данный момент:

CLLocationCoordinate2D bonusOne; bonusOne.latitude = 37.331689; bonusOne.longitude = -122.030731;

Какая симуляция местоположения GPS в бесконечном цикле

CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:bonusOne.latitude longitude:bonusOne.longitude];
double distance = [loc1 getDistanceFrom:newLocation];
if(distance <= 10000000) {

Тогда сделай что-нибудь }

Любое число меньше 10000000, и предполагается, что совпадений нет.

1 Ответ

2 голосов
/ 21 марта 2010

Да, вы можете использовать getDistanceFrom, чтобы получить расстояние между двумя точками.Расстояние в метрах.Вы можете использовать это сравнение по сравнению с текущей точностью по горизонтали от менеджера местоположений, чтобы определить, находитесь ли вы примерно на позиции «бонус один».

CLLocation *bonusLocation = [[CLLocation alloc] initWithLatitude:bonusOne.latitude longitude:bonusOne.longitude];
float distance = [bonusLocation getDistanceFrom:newLocation];
float threshold = 2 * [newLocation horizontalAccuracy]; // Or whatever you like
if(distance <= threshold) {
  // You are at the bonus location.
}
...