iPhone SDK: отслеживание местоположения пользователей с помощью GPS - PullRequest
2 голосов
/ 19 мая 2010

У меня есть несколько вопросов о CoreLocation и GPS.

Во-первых, какой метод в основном местоположении используется для постоянного получения текущих координат пользователей? И через какой интервал они должны быть восстановлены?

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

Спасибо, просто хочу начать думать об этом.

Ответы [ 4 ]

11 голосов
/ 19 мая 2010

Очень сокращенная версия:

Сначала примите протокол <CLLocationManagerDelegate> в вашем .h, и #import <CoreLocation/CoreLocation.h>.

Тогда в .m идти:

- (void)viewDidLoad {
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
}


-(void)locationManager:(CLLocationManager *)manager
   didUpdateToLocation:(CLLocation *)newLocation
          fromLocation:(CLLocation *)oldLocation
{
    CLLocationCoordinate2D here =  newLocation.coordinate;
    NSLog(@"%f  %f ", here.latitude, here.longitude);
}

Ваш метод -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation будет проверяться каждый раз, когда в Core Location есть что сказать вам, что должно происходить каждые несколько секунд. эти объекты CLLocation содержат информацию о точности, поэтому в этом методе вы можете найти хорошие моменты.

Обязательно позвоните [locationManager stopUpdatingLocation], а затем [locationManager release] в какой-то момент!

Удачи в поисках себя!

1 голос
/ 30 августа 2012

Вам нужно будет сделать следующее:

  1. Если устройство не может получить доступ к Интернету
    1. Получить координаты с устройства GPS
    2. Отправьте эти координаты по SMS
    3. Получение и декодирование SMS-сообщений на SMS-шлюзе, которые необходимо настроить для получения информации с устройства.
    4. Обновление информации в базе данных приложения или любом другом магазине, который вы используете
    5. Обновить положение на карте с помощью последней информации
  2. Если устройство может выходить в интернет
    1. Получить координаты с устройства GPS
    2. Подключиться к серверу приложений (может быть, какой-то службе) и загрузить информацию
    3. Обновите информацию в базе данных приложения или любом другом магазине, который вы используете
    4. Обновите позицию на карте с последней информацией
1 голос
/ 19 мая 2010

Вы можете определить, какой диапазон приемлем для точности, а также как часто вы хотите получать автоматические обновления (на основе расстояния от механизма последней точки). Также вы можете просто выключить диспетчер местоположений и снова включить его по желанию через некоторое использование таймера.

Что касается сохранения локаций для построения пути, это не так просто. Сначала вы будете постоянно получать GPS-местоположения, пока не будет достигнута желаемая точность, и для любых точек в будущем вы можете получить более одного неточного местоположения, прежде чем вы получите хорошее местоположение. Таким образом, построение списка этих точек будет в основном просто списком их путей, а также множеством дополнительных точек. Вы можете решить эту проблему, сохранив только те точки, которые обладают желаемой точностью, но в этом отношении это несовершенный мир.

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

1 голос
/ 19 мая 2010

Лучший способ - прочитать CLLocationManager Class Reference , который ссылается на несколько примеров проектов. Краткая версия:

  1. Установите свойство delegate для класса, который будет получать обновления местоположения.
  2. Реализация протокола CLLocationManagerDelegate в делегате.
  3. Вызовите методы appopriate, чтобы начать обновление местоположения и / или заголовка.
...