2011-10-17 8 views
10

Qualcuno ha avuto successo utilizzando una rotta o traccia GPX per testare le app che riconoscono la posizione che dipendono dallo spostamento in Xcode 4.2? Sono stato in grado di farlo usare un singolo waypoint in un file GPX o persino farlo scorrere su una serie di waypoint, ma non sono stato in grado di farlo seguire una traccia in un modo che avrebbe dato velocità e informazioni sul corso . Ho provato con tracce registrate da guida, percorsi e piste fatte a mano e percorsi realizzati con Trailrunner.Utilizzo di GPX route o traccia per il test in Xcode 4.2

È possibile che questa funzionalità non sia disponibile, ma Apple fornisce una guida freeway nel simulatore. Voglio essere in grado di fare qualcosa di simile sul dispositivo e in una posizione che posso specificare. Qualcuno ha qualche pensiero?

+0

Non sono sicuro se ci sono informazioni velocità e la rotta. Se ti ho capito bene, hai già ottenuto il modo in cui è stato mostrato nel video degli sviluppatori di strumenti WWDC Kickoff (17:44)? Questo funziona bene per me con un percorso registrato (ad esempio scaricato da everytrial.com). A quale autostrada ti riferisci? – brainray

+0

C'è un menu nel simulatore che ti permette di scegliere tra alcune tracce predefinite fornite da Apple. La velocità e le informazioni sul corso sono ciò che voglio. Si presenta quando si utilizzano le tracce predefinite nel simulatore, ma se utilizzo le mie tracce personali non funzionerà sul dispositivo o sul simulatore. – RPeck

risposta

4

Il modo migliore è creare la propria classe di simulatore per leggere il file e generare eventi CLLocation, che offre un controllo completo. I file GPX non contengono velocità e intestazione, quindi dovrai calcolarli da soli. L'anello di simulazione di base che ho usato è:

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 

Nota: Fino a poco tempo, sintetizzando CLLocations era un po 'problematico in quanto CLLocation è immutabile e il metodo init avuto modo di impostare la velocità e la direzione. Questo è stato risolto in iOS 4.2.

+0

Ho pensato che forse la velocità e la direzione erano supportate in un'estensione GPX, ma gli unici che ho trovato (da Garmin e Humminbird) no. Se qualcuno lo sa in modo diverso, rimarrò corretto. –

+0

Questo sembra essere l'unico modo per farlo accadere sul dispositivo stesso. Il formato GPX tiene conto dei tag di rotta e velocità, ma come hai osservato, non sono sempre registrati dal GPS. Alcune app registreranno queste informazioni, però. Per il simulatore, penso che un metodo simile potrebbe essere usato per generare il file di simulazione come discusso da Steve Madsen. – RPeck

4

L'unità Freeway sembra essere definita da un file 1,6 MB in /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreLocation.framework/Support/SimulationScenarios/Freeway Drive.plist. È un dizionario con due chiavi, Options e Locations. Options è di per sé un dizionario con due chiavi e può essere probabilmente decodificato. Locations, invece, è un array di grandi dimensioni (2240 ​​articoli) di NSData, ciascuno di circa 724 byte. I primi otto byte decodificano in "bplist00", quindi ognuno di questi è un plist. Ne ho scritto uno su disco, ma l'editor della lista delle proprietà di Xcode afferma che è corrotto.

La directory in cui si trova quel file è anche dove vivono le altre posizioni e percorsi predefiniti. Ho duplicato uno dei file e riavviato il simulatore, e il nuovo file è apparso nel menu Debug.

Il problema più grande con l'aggiunta di file personali è che un futuro aggiornamento Xcode potrebbe cancellarli, ma non è un grosso problema se si mantengono gli originali da qualche parte.

+0

Non l'avevo ancora scoperto. Sembra che ognuna di queste righe bplist00 sia un archivio di un oggetto CLLocation. Probabilmente potrei scrivere uno strumento per generare un file simile da una traccia GPX, ma sarebbe disponibile solo sul simulatore. Mi piacerebbe davvero essere in grado di farlo sul dispositivo. – RPeck

+0

Dubito che Apple offrirà un modo per simulare i cambiamenti di posizione sul dispositivo poiché supporta nativamente la determinazione della posizione attraverso una combinazione di Wi-Fi, torri cellulari e GPS. Dovrai eseguire il rollover del tuo codice per falsi aggiornamenti di posizione lì. –

+2

Apple supporta singole posizioni e passa in rassegna una serie di punti in un file gpx sul dispositivo. Non sembra esserci il supporto per lo spostamento dei dati con il corso e la velocità. – RPeck