Первое, что вам нужно сделать - это получить в базе данных позиции Long Long вместо адресов. Существует инструмент, который предоставляет Google, который делает это. Существует также ручной подход .
Тогда вы можете использовать формулу Haversine , чтобы определить, находится ли она в пределах определенного радиуса от вашего местоположения.
Вот пример. Вы можете перемещаться по объектам (местоположению) на карте и видеть, как далеко они находятся от вас.
-(CGFloat) getDistance :(CGFloat)objLatitude :(CGFloat)objLongitude :(CGFloat)currentLocationLatitude :(CGFloat)currentLocationLongitude
{
CGFloat earthRadius = 6371;
CGFloat deltaLat = deg2rad(currentLocationLatitude - objLatitude);
CGFloat deltaLong = deg2rad(objLongitude - currentLocationLongitude);
CGFloat a = sin(deltaLat/2) * sin(deltaLat/2) +
cos(deg2rad(objLatitude)) * cos(deg2rad((double)currentLocationLatitude)) *
sin(deltaLong/2) * sin(deltaLong/2);
CGFloat c = 2 * atan2(sqrt(a), sqrt(1 - a));
CGFloat d = earthRadius * c;
d = round(d, 4); // round to 4dp
d = d * 1000; // convert from km to m
d = d * 0.621371192; // convert from km to miles
return d; // m
}
Вы можете изменить этот метод, чтобы он возвращал значение ИСТИНА, если оно находится в пределах определенного расстояния, и ЛОЖЬ, если это не так:
-(BOOL) doesObjFallWithinMyRadius :(CGFloat)objLatitude :(CGFloat)objLongitude :(CGFloat)currentLocationLatitude :(CGFloat)currentLocationLongitude :(CGFloat)distanceLimit
{
CGFloat earthRadius = 6371;
CGFloat deltaLat = deg2rad(currentLocationLatitude - objLatitude);
CGFloat deltaLong = deg2rad(objLongitude - currentLocationLongitude);
CGFloat a = sin(deltaLat/2) * sin(deltaLat/2) +
cos(deg2rad(objLatitude)) * cos(deg2rad((double)currentLocationLatitude)) *
sin(deltaLong/2) * sin(deltaLong/2);
CGFloat c = 2 * atan2(sqrt(a), sqrt(1 - a));
CGFloat d = earthRadius * c;
d = round(d, 4); // round to 4dp
d = d * 1000; // convert from km to m
d = d * 0.621371192; // convert from km to miles
if(d < distanceLimit) return TRUE;
else return FALSE;
}
Чтобы узнать ваше текущее местоположение, вам нужно использовать CLLocationManager , который является частью iOS SDK.