2011-10-17 15 views
10

Czy ktoś miał jakiś sukces, korzystając z trasy GPX lub ścieżki do testowania aplikacji świadomych lokalizacji, które zależą od ruchu w Xcode 4.2? Byłem w stanie zmusić go do użycia pojedynczego waypointu w pliku GPX, lub nawet zmusić go do powtórzenia serii punktów na drodze, ale nie byłem w stanie zmusić go do podążania śladami w sposób, który dawałby szybkość i informacje o kursie . Próbowałem z nagranymi utworami z jazdy, ręcznie wykonanymi trasami i trasami oraz trasami z Trailrunner.Korzystanie z trasy lub ścieżki GPX do testowania w Xcode 4.2

Może się zdarzyć, że ta funkcja nie jest dostępna, ale Apple zapewnia napęd na autostradzie w symulatorze. Chcę móc zrobić coś podobnego na urządzeniu i w miejscu, które mogę określić. Ktoś ma jakieś myśli?

+0

Nie jestem pewien, czy nie ma informacji, prędkość i kurs. Jeśli dobrze cię zrozumiałeś, udało ci się to już zrobić tak, jak pokazano w KX (17:44) Narzędzia programistów WWDC. Działa to dobrze dla mnie z nagraną trasą (np. Pobraną z everytrial.com). Którą autostradę masz na myśli? – brainray

+0

W samym symulatorze znajduje się menu, które pozwala wybrać jedną z predefiniowanych ścieżek dostarczonych przez firmę Apple. Informacje o prędkości i kursie są tym, czego chcę. Pojawia się podczas używania predefiniowanych ścieżek w symulatorze, ale jeśli użyję własnych ścieżek, nie będzie działać na urządzeniu lub symulatorze. – RPeck

Odpowiedz

4

Najlepszym sposobem jest stworzenie własnej klasy symulatora, aby odczytać plik i wygenerować zdarzenia CLLocation, co daje pełną kontrolę. Pliki GPX nie zawierają prędkości i kursu, więc musisz je sam obliczyć. Podstawowym pętli symulacji użyłem to:

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 

Uwaga: Do niedawna syntetyzowania CLLocations był nieco problematyczne, ponieważ CLLocation jest niezmienna i metoda startowych nie miał możliwości, aby ustawić prędkość i kierunek. Zostało to naprawione w iOS 4.2.

+0

Pomyślałem, że może prędkość i nagłówek były obsługiwane w rozszerzeniu GPX, ale jedyne, które znalazłem (od Garmin i Humminbird) nie. Jeśli ktoś wie inaczej, stanę się poprawiony. –

+0

Wydaje się, że to jedyny sposób, aby to się stało na samym urządzeniu. Format GPX uwzględnia tagi kursu i prędkości, ale jak zauważyłeś, nie zawsze są one rejestrowane przez GPS. Niektóre aplikacje będą zapisywać te informacje. Dla symulatora myślę, że podobną metodę można wykorzystać do wygenerowania pliku symulacji, o czym mówił Steve Madsen. – RPeck

4

Napęd Freeway wydaje się być zdefiniowany przez plik 1,6 MB w /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreLocation.framework/Support/SimulationScenarios/Freeway Drive.plist. Jest to słownik z dwoma kluczami: Options i Locations. Options sam w sobie jest słownikiem z dwoma kluczami i prawdopodobnie można go odtworzyć. Locations, z drugiej strony, jest dużą tablicą (2240 ​​pozycji) z NSData, z których każda ma około 724 bajty. Pierwsze osiem bajtów dekoduje się na "bplist00", więc każdy z nich jest plikiem plist. Napisałem jeden na dysk, ale edytor listy właściwości Xcode twierdzi, że jest uszkodzony.

Katalog, w którym znajduje się ten plik, to także miejsce, w którym znajdują się inne miejsca i trasy w puszkach. Powieliłem jeden z plików i zrestartowałem symulator, a nowy plik pojawił się w menu Debuguj.

Największym problemem związanym z dodawaniem własnych plików jest to, że przyszła aktualizacja Xcode może je usunąć, ale to nie jest wielka sprawa, jeśli trzymasz oryginały gdzieś.

+0

Jeszcze tego nie odkryłem. Wygląda na to, że każda z tych linii bplist00 jest archiwum obiektu CLLocation. Prawdopodobnie mógłbym napisać narzędzie do generowania podobnego pliku ze ścieżki GPX, ale byłby on dostępny tylko na symulatorze. Naprawdę chciałbym móc to zrobić na urządzeniu. – RPeck

+0

Wątpię, czy Apple zaoferuje sposób na symulowanie zmian lokalizacji na urządzeniu, ponieważ umożliwia on natywnie ustalanie lokalizacji za pomocą kombinacji Wi-Fi, wież komórkowych i GPS. Będziesz musiał przetasować swój kod, aby tam udawać aktualizacje lokalizacji. –

+2

Apple obsługuje pojedyncze lokalizacje i jeździ na rowerze przez serię punktów w pliku gpx na urządzeniu. Wydaje się, że po prostu nie ma wsparcia dla przenoszenia danych z kursem i prędkością. – RPeck

Powiązane problemy