#iphone #location #real-time
#iPhone #Расположение #в режиме реального времени
Вопрос:
это не вопрос кодирования, это просто концепция, которой я пытаюсь достичь (alogirthm), если хотите.
в основном, что я хочу сделать, это проверить, находится ли пользователь в определенном месте, то есть в британском meseum!! а затем отправить им сообщение с надписью «добро пожаловать в британский музей».
в моей базе данных есть только три местоположения
- британский музей
- мадам Тюссо
- вестминстерское аббатство
я знаю, что мне нужно использовать проверку в реальном времени! итак, я подумал, что я получаю местоположение пользователя, проверяю, соответствует ли оно любым трем значениям, а затем отправляю сообщение. можете ли вы предложить что-нибудь получше? Спасибо
Ответ №1:
Да, похоже, это сработает. Просто убедитесь, что местоположение совпадает в радиусе (местоположение никогда не будет точно таким же), т.Е.
if ( dist ( userCoordinate - museumCoordinate) < THRESHOLD ) ...
(используйте distanceFromLocation:
метод для вычисления этого)
Кроме того, чтобы получить проверку в режиме реального времени, вы можете захотеть использовать обратный вызов делегата CLLocationManager
для получения обновлений при изменении местоположения пользователей.
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
// The location has changed to check if they are in one of your places
}
Ответ №2:
То, что вы хотите, называется геокодированием. Обычно это делается путем отправки запроса в службу, которая фактически выполняет преобразование за вас. Google и некоторые другие компании предлагают эту услугу.
Приведенное ниже может быть использовано в качестве ссылки на код
-(CLLocationCoordinate2D) addressLocation:(NSString *)input {
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@amp;output=csv",
[input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
NSArray *listItems = [locationString componentsSeparatedByString:@","];
double latitude = 0.0;
double longitude = 0.0;
if([listItems count] >= 4 amp;amp; [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
latitude = [[listItems objectAtIndex:2] doubleValue];
longitude = [[listItems objectAtIndex:3] doubleValue];
}
else {
//Show error
}
CLLocationCoordinate2D location;
location.latitude = latitude;
location.longitude = longitude;
return location;
}