Domanda

Ho bisogno di simulare come la mia applicazione apparirà quando un utente sta guidando in giro per una demo. Ho un MKMapView, come posso simulare l'aspetto di un utente andare in giro, che utilizzerà la funzionalità map.userLocation, che ovviamente non saranno disponibili nella demo.

Grazie!

È stato utile?

Soluzione 2

Beh ho avuto qualcosa da fare, ho appena fatto essenzialmente questo

- (void)moveIcon:(MKAnnotationView*)locationView toLocation:(CLLocation*)newLoc
{
    LocationAnnotation* annotation = [[[LocationAnnotation alloc] initWithCoordinate:newLoc.coordinate] autorelease];
    [locationView setAnnotation:annotation];
    [map setCenterCoordinate:newLoc.coordinate animated:YES];
}

Poi chiamo questo ragazzo in un ciclo tra tutti i miei vertici con un leggero ritardo. Funziona abbastanza qell.

Altri suggerimenti

Non c'è modo di simulare in iPhone simulatore. Avrete bisogno di caricarlo sul vostro dispositivo e muoversi.

Io non sono un esperto dev iPhone, ma come fa la guarda la mappa ricevo le coordinate? Se tramite una funzione che chiama l'API CoreLocation, si potrebbe forse solo scrivere una funzione che genera in modo casuale i valori di longitudine e latitudine in un determinato intervallo di tempo e avere la vostra guarda la mappa tirare le coordinate da lì, invece? Solo un pensiero.

Si potrebbe anche verificare iSimulate che pretende di essere in grado di simulare diverse caratteristiche disponibili solo su l'iPhone nel simulatore iPhone includono CoreLocation. Non ho provato io stesso modo la vostra situazione potrebbe essere diversa.

Al fine di simulare la guida è necessario stabilire 2 funzionalità di base:

    CLLocations
  1. Lettura di un archivio (che ci si accede durante il test drive con un dispositivo). Idealmente si esegue questa operazione in base ai timestamp sulle località, vale a dire che riproducono esattamente le stesse aggiornamenti della posizione che sono state ricevute durante il test drive.

  2. aggiorna la posizione del vostro MKAnnotationView sulla mappa in base alle posizioni letti dal registro.

Da parte 1, un'occhiata a CLLocationDispatch , una classe a portata di mano, che fornisce archiviazione / estrazione dall'archivio di CLLocations e li spedisce ad uno o più ascoltatori (utilizzando il protocollo CLLocationManagerDelegate).

Per la parte 2, un'occhiata a Moving-MKAnnotationView .

Ho trovato un modo migliore sarebbe quello di creare una sottoclasse MKUserLocation:

class SimulatedUserLocation: MKUserLocation {
    private var simulatedCoordinate = CLLocationCoordinate2D(latitude: 39, longitude: -76)
    override dynamic var coordinate: CLLocationCoordinate2D {
        get {
            return simulatedCoordinate
        }
        set {
            simulatedCoordinate = newValue
        }
    }
}

Quindi aggiungerlo come mapView.addAnnotation(SimulatedUserLocation()) annotazione. (Si potrebbe anche voler nascondere la vera posizione prima mapView.showsUserLocation = false)

iOS renderebbero l'annotazione esattamente come la posizione dell'utente reale.

dynamic viene utilizzato sulla proprietà in modo che cambiando coordinare innesca KVO e lo muove sulla mappa.

La risposta è NO. Poi, come circa l'aggiunta di un livello di astrazione tra il codice e MKMapKit? Si può fare test xUnit per il vostro obiettivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top