как я могу получить местоположение пользователя с iphone?

#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;
}