как я могу получить местоположение пользователя с iphone? - PullRequest
1 голос
/ 22 апреля 2011

это не вопрос кодирования, это просто концепция, которую я пытаюсь достичь (alogirthm), если хотите.

По сути, я хочу проверить, находится ли пользователь в определенном месте, то есть в британском мезеуме! а затем отправив им сообщение с надписью «Добро пожаловать в британский мезеум».

У меня есть только три местоположения в моей базе данных

  • Британский музей
  • Мадам Тюссо
  • Вестминстерское аббатство

Я знаю, что мне нужно использовать проверку в реальном времени! поэтому я думал, что я получу местоположение пользователей, проверим, соответствует ли оно любым трем значениям, а затем отправлю сообщение. Вы можете предложить что-нибудь лучше? спасибо

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Да, похоже, это сработает.Обязательно проверьте соответствие местоположения в пределах радиуса (местоположение никогда не будет точно таким же), т.е.

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
 }
1 голос
/ 22 апреля 2011

То, что вы хотите, называется геокодирование . Обычно это делается путем отправки запроса в службу, которая фактически выполняет преобразование для вас. Google и некоторые другие компании предлагают эту услугу.

Ниже может использоваться в качестве справочного кода

-(CLLocationCoordinate2D) addressLocation:(NSString *)input {

    NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&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 && [[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;
}
...