Использование маршрута GPX или трека для тестирования в Xcode 4.2

Кто-нибудь имел успех с использованием маршрута или дорожки GPX для тестирования приложений, ориентированных на местоположение, которые зависят от движения в Xcode 4.2? Я смог заставить его использовать одну путевую точку в GPX файле или даже заставить ее перебирать несколько путевых точек, но я не смог заставить ее следовать дорожке таким образом, чтобы обеспечить скорость и информацию о курсе, Я пробовал с записанными дорожками от вождения, ручных маршрутов и дорожек и маршрутов, сделанных с Trailrunner.

Возможно, эта функция просто недоступна, но Apple действительно предоставляет накопитель freeway в симуляторе. Я хочу иметь возможность делать что-то подобное на устройстве и в том месте, которое я могу указать. У кого-нибудь есть мысли?

Ответ 1

Лучший способ - создать свой собственный класс симулятора для чтения файла и генерации событий CLLocation, что даст вам полный контроль. Файлы GPX не содержат скорости и заголовка, поэтому вам придется самостоятельно их вычислять. Основной цикл моделирования, который я использовал:

Simulate{
  if (!eof) {
    Read the next waypoint
    Calculate distance, dt (delta time), bearing and speed (distance/dt) from the previous waypoint

    Generate a CLLocation object and call the didUpdateToLocation delegate method
    Peek at the next waypoint and calculate next_dt
    Scale next_dt   // as desired for faster playback (e.g. dt/2 would be 2x)
    Start an NSTimer with next_dt as the duration
  }
}

When the timer fires, call Simulate again

Примечание. До недавнего времени синтез CLLocations был несколько проблематичным, поскольку CLLocation неизменен, и метод init не имел возможности установить скорость и заголовок. Это было исправлено в iOS 4.2.

Ответ 2

Дисковод Freeway, как представляется, определяется файлом 1,6 МБ в /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreLocation.framework/Support/SimulationScenarios/Freeway Drive.plist. Это словарь с двумя клавишами, Options и Locations. Options сам - словарь с двумя ключами и, вероятно, может быть обратным. Locations, с другой стороны, представляет собой большой массив (2240 ​​элементов) NSData, каждый из которых содержит около 724 байта. Первые восемь байтов декодируются до "bplist00", поэтому каждый из них является plist. Я написал один на диск, но редактор списка свойств Xcode утверждает, что он поврежден.

В каталоге, где находится этот файл, также находятся другие локальные сети и маршруты. Я продублировал один из файлов и перезапустил симулятор, а новый файл появился в меню Debug.

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

Ответ 3

Вы можете создавать сложные маршруты с помощью Google Maps, а затем конвертировать их в совместимый файл GPX с помощью https://mapstogpx.com/mobiledev.php