2008-10-18 14 views
94

Come posso impostare la posizione (come viene prelevata nei servizi di CoreLocation) in iPhone Simulator?Impostare la posizione in iPhone Simulator

+0

ho aggiunto un metodo per Xcode 6. http://stackoverflow.com/questions/19694205/customize-ios-simulator-preset-locations-to-fake-as-current-location/27299841#27299841 – Ohmy

+0

Qualcuno è riuscito a far funzionare questo in React nativo, simulatore? – Nikos

risposta

17

Nel mio callback delegato, controllo se sono in esecuzione in un simulatore (#if TARGET_ IPHONE_SIMULATOR) e, in tal caso, fornisco il mio, pre-cercato, Lat/Long. Per quanto ne so, non c'è altro modo.

+3

A partire da Xcode 4.2, ora c'è un modo nel menu 'Debug' del simulatore usando la voce' Location' che consente di impostare una posizione personalizzata o selezionare da alcune attrazioni e posizioni predefinite. – progrmr

0

Meglio tardi che mai :)

Ho appena imbattuto in questo iSimulate, che consente di inviare posizione falsi per l'applicazione. La soluzione NON è gratuita.

> Q: How does iSimulate work? 

> A: When added to your project, the iSimulate 
> SDK library creates a listening server 
> on your iPhone Simulator that waits 
> for a connection from an iPhone/iPod 
> running the iSimulate client. When 
> such connection is established, the 
> iSimulate client running on your 
> iPhone/iPod captures all data from the 
> accelerometer sensor, the touch 
> events, the location and device ID and 
> streams them to the server. The 
> iSimulate SDK library then recreates 
> all input events synthetically. This 
> is entirely transparent to your 
> application and does not interfere 
> with your application's functionality. 

In ogni caso, ho intenzione di ottenere questo. aggiornerà più presto!

+0

Ho appena contattato gli sviluppatori: "Nelle Opzioni di iSimulate, accessibile dal pulsante in alto a destra nella schermata" Seleziona computer da connettere a ", puoi selezionare una delle altre quattro posizioni da utilizzare." Quindi, non molto aiuto davvero. –

+0

https://bitbucket.org/gnucoop/xamarin-ios-simulator-enhancements Questo aiuta a simulare le posizioni gratuitamente – Pierre

0

Dove si desidera impostare la posizione? puoi usare mapkit api per mostrarti la posizione. vedi icodeblog.com per maggiori dettagli su come usare mapkit. Inoltre è possibile memorizzare le coordinate desiderate solo creando una posizione CLLocation2D * dell'oggetto; location.longitude = il valore di longitudine desiderato; location.latitude = il valore di latitudine desiderato;

+0

Questa era una vecchia domanda da quando ero nuovo sull'SDK. Ora mi rendo conto che non vi è alcun supporto per l'automazione di CoreLocation nel simulatore, il che è un peccato. – Cliff

3

I tipi gentili di FutureTap hanno reso disponibile FTLocationSimulator a GitHub. Ti consente di preparare un percorso di prova utilizzando, ad esempio, Google Earth, e poi il simulatore feed queste coordinate alla tua app.

Ho scritto un blog post su come utilizzare FTLocationSimulator per passare facilmente da più percorsi durante il test delle funzioni di posizione.

3

è possibile aggiungere file GPX per il vostro progetto e usarlo:
Modifica schema> Opzioni> permettere la simulazione posizione> scegliere il nome del file che contiene ad esempio:

<?xml version="1.0"?> 
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="41.92296" lon="-87.63892"></wpt> 
</gpx> 

opzionalmente solo hardcode il lat/lon valori che vengono restituiti dal responsabile della posizione. Questo è però vecchio stile.

in modo da non aggiungerlo al simulatore, ma al progetto Xcode.

+2

Come posso usare la posizione predefinita. puoi spiegarmi in dettaglio ???Voglio saperlo. –

+1

Progetto> Schemi> Modifica schema> Posizione principale ... – Raptor

+0

fare clic su xcode quindi prodotto> schemi> Modifica schema> posizione principale –

107

A partire da iOS 5, il simulatore ha una posizione configurabile.

Nel menu Debug, l'ultima voce è "Posizione"; questo ti dà un sottomenu con:

  • Nessuno
  • posizione personalizzata
  • Apple Store
  • di Apple
  • Città biciclette giro
  • City Run
  • Freeway Unità

Posizione personalizzata consente y Inserisci un valore Lat/Long. La corsa in bicicletta, City Run e Freeway Drive sono la simulazione di un luogo in movimento (a Cupertino, ovviamente).

Naturalmente, questo non fa nulla per il debugging per iOS 4 (o precedente); ma è un deciso miglioramento!

+0

dove si trova il menu di debug nel simulatore IOS? –

5

Pre iOS 5 si potesse fare in codice:

Io uso questo frammento poco prima della @implementation della classe in cui ho bisogno dei miei falsi dati di prua e di localizzazione.

#if (TARGET_IPHONE_SIMULATOR) 
@interface MyHeading : CLHeading 
    -(CLLocationDirection) magneticHeading; 
    -(CLLocationDirection) trueHeading; 
@end 

@implementation MyHeading 
    -(CLLocationDirection) magneticHeading { return 90; } 
    -(CLLocationDirection) trueHeading { return 91; } 
@end 

@implementation CLLocationManager (TemporaryLocationFix) 
- (void)locationFix { 
    CLLocation *location = [[CLLocation alloc] initWithLatitude:55.932 longitude:12.321]; 
    [[self delegate] locationManager:self didUpdateToLocation:location fromLocation:nil]; 

    id heading = [[MyHeading alloc] init]; 
    [[self delegate] locationManager:self didUpdateHeading: heading]; 
} 

-(void)startUpdatingHeading { 
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1]; 
} 

- (void)startUpdatingLocation { 
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1]; 
} 
@end 
#endif 

Dopo iOS 5 è sufficiente includere un file GPX nel progetto come questo per avere la posizione aggiornata continuamente Hillerød.gpx:

<?xml version="1.0"?> 
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="55.93619760" lon="12.29131930"></wpt> 
    <wpt lat="55.93625770" lon="12.29108330"></wpt> 
    <wpt lat="55.93631780" lon="12.29078290"></wpt> 
    <wpt lat="55.93642600" lon="12.29041810"></wpt> 
    <wpt lat="55.93653420" lon="12.28998890"></wpt> 
    <wpt lat="55.93660630" lon="12.28966710"></wpt> 
    <wpt lat="55.93670240" lon="12.28936670"></wpt> 
    <wpt lat="55.93677450" lon="12.28921650"></wpt> 
    <wpt lat="55.93709900" lon="12.28945250"></wpt> 
    <wpt lat="55.93747160" lon="12.28949540"></wpt> 
    <wpt lat="55.93770000" lon="12.28966710"></wpt> 
    <wpt lat="55.93785620" lon="12.28977440"></wpt> 
    <wpt lat="55.93809660" lon="12.28988170"></wpt> 
    <wpt lat="55.93832490" lon="12.28994600"></wpt> 
    <wpt lat="55.93845710" lon="12.28996750"></wpt> 
    <wpt lat="55.93856530" lon="12.29007480"></wpt> 
    <wpt lat="55.93872150" lon="12.29013910"></wpt> 
    <wpt lat="55.93886570" lon="12.28975290"></wpt> 
    <wpt lat="55.93898590" lon="12.28955980"></wpt> 
    <wpt lat="55.93910610" lon="12.28919500"></wpt> 
    <wpt lat="55.93861330" lon="12.28883020"></wpt> 
    <wpt lat="55.93845710" lon="12.28868000"></wpt> 
    <wpt lat="55.93827680" lon="12.28850840"></wpt> 
    <wpt lat="55.93809660" lon="12.28842250"></wpt> 
    <wpt lat="55.93796440" lon="12.28831520"></wpt> 
    <wpt lat="55.93780810" lon="12.28810070"></wpt> 
    <wpt lat="55.93755570" lon="12.28790760"></wpt> 
    <wpt lat="55.93739950" lon="12.28775730"></wpt> 
    <wpt lat="55.93726730" lon="12.28767150"></wpt> 
    <wpt lat="55.93707500" lon="12.28760710"></wpt> 
    <wpt lat="55.93690670" lon="12.28734970"></wpt> 
    <wpt lat="55.93675050" lon="12.28726380"></wpt> 
    <wpt lat="55.93649810" lon="12.28713510"></wpt> 
    <wpt lat="55.93625770" lon="12.28687760"></wpt> 
    <wpt lat="55.93596930" lon="12.28679180"></wpt> 
    <wpt lat="55.93587310" lon="12.28719940"></wpt> 
    <wpt lat="55.93575290" lon="12.28752130"></wpt> 
    <wpt lat="55.93564480" lon="12.28797190"></wpt> 
    <wpt lat="55.93554860" lon="12.28833670"></wpt> 
    <wpt lat="55.93550050" lon="12.28868000"></wpt> 
    <wpt lat="55.93535630" lon="12.28900190"></wpt> 
    <wpt lat="55.93515200" lon="12.28936670"></wpt> 
    <wpt lat="55.93505580" lon="12.28958120"></wpt> 
    <wpt lat="55.93481550" lon="12.29001040"></wpt> 
    <wpt lat="55.93468320" lon="12.29033230"></wpt> 
    <wpt lat="55.93452700" lon="12.29063270"></wpt> 
    <wpt lat="55.93438280" lon="12.29095450"></wpt> 
    <wpt lat="55.93425050" lon="12.29121200"></wpt> 
    <wpt lat="55.93413040" lon="12.29140520"></wpt> 
    <wpt lat="55.93401020" lon="12.29168410"></wpt> 
    <wpt lat="55.93389000" lon="12.29189870"></wpt> 
    <wpt lat="55.93372170" lon="12.29239220"></wpt> 
    <wpt lat="55.93385390" lon="12.29258530"></wpt> 
    <wpt lat="55.93409430" lon="12.29295010"></wpt> 
    <wpt lat="55.93421450" lon="12.29320760"></wpt> 
    <wpt lat="55.93433470" lon="12.29333630"></wpt> 
    <wpt lat="55.93445490" lon="12.29350800"></wpt> 
    <wpt lat="55.93463520" lon="12.29374400"></wpt> 
    <wpt lat="55.93479140" lon="12.29410880"></wpt> 
    <wpt lat="55.93491160" lon="12.29419460"></wpt> 
    <wpt lat="55.93515200" lon="12.29458090"></wpt> 
    <wpt lat="55.93545250" lon="12.29494570"></wpt> 
    <wpt lat="55.93571690" lon="12.29505300"></wpt> 
    <wpt lat="55.93593320" lon="12.29513880"></wpt> 
    <wpt lat="55.93617360" lon="12.29522460"></wpt> 
    <wpt lat="55.93622170" lon="12.29537480"></wpt> 
    <wpt lat="55.93713510" lon="12.29505300"></wpt> 
    <wpt lat="55.93776000" lon="12.29378700"></wpt> 
    <wpt lat="55.93904600" lon="12.29531040"></wpt> 
    <wpt lat="55.94004350" lon="12.29552500"></wpt> 
    <wpt lat="55.94023570" lon="12.29561090"></wpt> 
    <wpt lat="55.94019970" lon="12.29591130"></wpt> 
    <wpt lat="55.94017560" lon="12.29629750"></wpt> 
    <wpt lat="55.94017560" lon="12.29670520"></wpt> 
    <wpt lat="55.94017560" lon="12.29713430"></wpt> 
    <wpt lat="55.94019970" lon="12.29754200"></wpt> 
    <wpt lat="55.94024780" lon="12.29816430"></wpt> 
    <wpt lat="55.94051210" lon="12.29842180"></wpt> 
    <wpt lat="55.94084860" lon="12.29820720"></wpt> 
    <wpt lat="55.94105290" lon="12.29799270"></wpt> 
    <wpt lat="55.94123320" lon="12.29777810"></wpt> 
    <wpt lat="55.94140140" lon="12.29749910"></wpt> 
    <wpt lat="55.94142550" lon="12.29726310"></wpt> 
    <wpt lat="55.94147350" lon="12.29687690"></wpt> 
    <wpt lat="55.94155760" lon="12.29619020"></wpt> 
    <wpt lat="55.94161770" lon="12.29576110"></wpt> 
    <wpt lat="55.94148550" lon="12.29531040"></wpt> 
    <wpt lat="55.94093270" lon="12.29522460"></wpt> 
    <wpt lat="55.94041600" lon="12.29518170"></wpt> 
    <wpt lat="55.94056020" lon="12.29398010"></wpt> 
    <wpt lat="55.94024780" lon="12.29352950"></wpt> 
    <wpt lat="55.94001940" lon="12.29335780"></wpt> 
    <wpt lat="55.93992330" lon="12.29325050"></wpt> 
    <wpt lat="55.93969490" lon="12.29299300"></wpt> 
    <wpt lat="55.93952670" lon="12.29277840"></wpt> 
    <wpt lat="55.93928630" lon="12.29260680"></wpt> 
    <wpt lat="55.93915410" lon="12.29232780"></wpt> 
    <wpt lat="55.93928630" lon="12.29202740"></wpt> 
    <wpt lat="55.93933440" lon="12.29174850"></wpt> 
    <wpt lat="55.93947860" lon="12.29116910"></wpt> 
    <wpt lat="55.93965890" lon="12.29095450"></wpt> 
    <wpt lat="55.94001940" lon="12.29061120"></wpt> 
    <wpt lat="55.94041600" lon="12.29084730"></wpt> 
    <wpt lat="55.94076450" lon="12.29101890"></wpt> 
    <wpt lat="55.94080060" lon="12.29065410"></wpt> 
    <wpt lat="55.94086060" lon="12.29031080"></wpt> 
    <wpt lat="55.94092070" lon="12.28990310"></wpt> 
    <wpt lat="55.94099280" lon="12.28975290"></wpt> 
    <wpt lat="55.94119710" lon="12.28986020"></wpt> 
    <wpt lat="55.94134130" lon="12.28998890"></wpt> 
    <wpt lat="55.94147350" lon="12.29007480"></wpt> 
    <wpt lat="55.94166580" lon="12.29003190"></wpt> 
    <wpt lat="55.94176190" lon="12.28938810"></wpt> 
    <wpt lat="55.94183400" lon="12.28893750"></wpt> 
    <wpt lat="55.94194220" lon="12.28850840"></wpt> 
    <wpt lat="55.94199030" lon="12.28835820"></wpt> 
    <wpt lat="55.94215850" lon="12.28859420"></wpt> 
    <wpt lat="55.94250700" lon="12.28883020"></wpt> 
    <wpt lat="55.94267520" lon="12.28893750"></wpt> 
    <wpt lat="55.94284350" lon="12.28902330"></wpt> 
    <wpt lat="55.94304770" lon="12.28915210"></wpt> 
    <wpt lat="55.94325200" lon="12.28925940"></wpt> 
    <wpt lat="55.94348030" lon="12.28953830"></wpt> 
    <wpt lat="55.94366060" lon="12.28966710"></wpt> 
    <wpt lat="55.94388890" lon="12.28975290"></wpt> 
    <wpt lat="55.94399700" lon="12.28994600"></wpt> 
    <wpt lat="55.94379280" lon="12.29065410"></wpt> 
    <wpt lat="55.94364860" lon="12.29095450"></wpt> 
    <wpt lat="55.94350440" lon="12.29127640"></wpt> 
    <wpt lat="55.94340820" lon="12.29155540"></wpt> 
    <wpt lat="55.94331210" lon="12.29198450"></wpt> 
    <wpt lat="55.94315590" lon="12.29269260"></wpt> 
    <wpt lat="55.94310780" lon="12.29318610"></wpt> 
    <wpt lat="55.94301170" lon="12.29361530"></wpt> 
    <wpt lat="55.94292760" lon="12.29408740"></wpt> 
    <wpt lat="55.94290350" lon="12.29436630"></wpt> 
    <wpt lat="55.94287950" lon="12.29453800"></wpt> 
    <wpt lat="55.94283140" lon="12.29533190"></wpt> 
    <wpt lat="55.94274730" lon="12.29606150"></wpt> 
    <wpt lat="55.94278340" lon="12.29621170"></wpt> 
    <wpt lat="55.94280740" lon="12.29649060"></wpt> 
    <wpt lat="55.94284350" lon="12.29679100"></wpt> 
    <wpt lat="55.94284350" lon="12.29734890"></wpt> 
    <wpt lat="55.94308380" lon="12.29837890"></wpt> 
    <wpt lat="55.94315590" lon="12.29852910"></wpt> 
    <wpt lat="55.94263920" lon="12.29906550"></wpt> 
    <wpt lat="55.94237480" lon="12.29910850"></wpt> 
    <wpt lat="55.94220660" lon="12.29915140"></wpt> 
    <wpt lat="55.94208640" lon="12.29902260"></wpt> 
    <wpt lat="55.94196620" lon="12.29887240"></wpt> 
    <wpt lat="55.94176190" lon="12.29794970"></wpt> 
    <wpt lat="55.94156970" lon="12.29760640"></wpt> 
</gpx> 

Io uso GPSies.com per creare il file di base per i dati GPX. Tuttavia, è necessario un po 'di pulizia.

Attivare eseguendo il simulatore e scegliendo il file

http://castleandersen.dk/keepers/location.png

75
  1. progetto Run in iPhone Simulator
  2. Creare in file di TextEdit file seguente, lo chiamano MyOffice per esempio. Fare estensione come .gpx enter image description here

    <?xml version="1.0"?> <gpx version="1.0" creator="MyName"> <wpt lat="53.936166" lon="27.565370"> <name>MyOffice</name> </wpt> </gpx>

  3. Selezionare in Xcode presso l'area Simula Add GPX File to Project...enter image description here

  4. Aggiungi file dal menù creato per proiettare.
  5. Ora è possibile visualizzare la propria posizione in zona Simula: enter image description here
+0

TextEdit non salva il file .gpx. Come faccio? –

+2

salvalo come .txt (o .xml) e quindi rinomina in .gpx – beryllium

+7

Grazie! Molto facile, funziona alla grande. Nel caso in cui qualcun altro usi questo heres il file GPX di esempio nel testo in modo da poterlo copiare e incollare: \t \t \t Ufficio \t RyanG

2
applicazione

Aperto simulatore iOS da Debug Menu -> Localizzazione ->

  1. Nessuno
  2. posizione personalizzata
  3. Apple Store ...
5

in Simulatore iOS m enu, vai a Debug -> Posizione -> Posizione personalizzata. Qui puoi impostare la latitudine e la longitudine e testare l'app di conseguenza. Funziona con mapkit e anche con CLLocationManager.

Problemi correlati