Casa Social media Come aggiungere un pulsante di posizione corrente alla tua app iOS - dummies

Come aggiungere un pulsante di posizione corrente alla tua app iOS - dummies

Video: Impostare e condividere posizioni false con WhatsApp, Facebook (e Pokemon Go) 2024

Video: Impostare e condividere posizioni false con WhatsApp, Facebook (e Pokemon Go) 2024
Anonim

È facile aggiungere un pulsante alla barra della barra degli strumenti nella app iOS per ingrandire la posizione corrente e quindi tornare alla regione della mappa e all'intervallo che stai attualmente visualizzando.

Aggiungi il codice in grassetto per aggiungere il pulsante nel metodo MapController viewDidLoad.

- (void) viewDidLoad {[super viewDidLoad]; se stesso. MapView. delegato = auto; se stesso. MapView. showsUserLocation = YES; [self setInitialRegion]; RTAppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {UILabel * titleLabel = [[UILabel alloc] initWithFrame: CGRectMake (0, 0, 250, 44)]; titleLabel. textColor = [UIColor yellowColor]; titleLabel. font = [UIFont boldSystemFontOfSize: 17]; titleLabel. textAlignment = NSTextAlignmentCenter; titleLabel. backgroundColor = [UIColor clearColor]; titleLabel. text = [self mapTitle]; UIBarButtonItem * titleView = [[UIBarButtonItem alloc]] initWithCustomView: titleLabel]; UIBarButtonItem * flexibleSpace = [[UIBarButtonItem alloc]] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target: nil action: nil]; flexibleSpace. larghezza = 1. 0; NSMutableArray * itemsArray = [self. barra degli strumenti. elementi mutableCopy]; [itemsArray insertObject: flexibleSpace atIndex: [itemsArray count] -2]; [itemsArray insertObject: titleView atIndex: [itemsArray count] -2]; [se stesso. toolbar setItems: itemsArray animated: NO];} else {self. title = [appDelegate. trip mapTitle];} [self addAnnotations]; UIBarButtonItem * locateButton = [[UIBarButtonItem alloc]] initWithTitle: @ "Locate" style: UIBarButtonItemStyleBordered target: self action: @selector (goToLocation:)];; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { NSMutableArray * itemsArray = [self. barra degli strumenti. elementi mutableCopy]; [itemsArray insertObject: locateButton atIndex: [itemsArray count]]; [auto. toolbar setItems: itemsArray animated: NO]; } altro { sé. navigationItem. rightBarButtonItem = locateButton; } }

Quando l'utente tocca il pulsante Trova che hai creato qui, hai specificato che il messaggio goToLocation: deve essere inviato [action: @selector (goToLocation:)] al MapController (target: se stesso).

UIBarButtonItem * locateButton = [[UIBarButtonItem alloc]] initWithTitle: @ Stile "Locate": UIBarButtonItemStylePlain target: self action: @selector (goToLocation:)]; se stesso. navigationItem. rightBarButtonItem = locateButton;

Non dimenticare, per tornare a una posizione è necessario scegliere una posizione simulata se si sta utilizzando il simulatore.

Quindi, aggiungere il metodo goToLocation: a MapController. m.

MKUserLocation * annotation = self. MapView. userLocation; CLLocation * location = annotation. Posizione; se (nil == posizione) ritorno; CLLocationDistance distance = MAX (4 * location. HorizontalAccuracy, 500); MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (posizione, coordinate, distanza, distanza); [se stesso. mapView setRegion: region animated: NO]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * itemsArray = self. barra degli strumenti. elementi; UIBarButtonItem * locateButton = [itemsArray objectAtIndex: [itemsArray count] -1]; locateButton. action = @selector (goToDestination:); locateButton. title = @ "Destination";} else {self. navigationItem. rightBarButtonItem. action = @selector (goToDestination:); se stesso. navigationItem. rightBarButtonItem. title = @ "Destination";}}

Quando l'utente tocca il pulsante Locate, l'app prima controlla se la posizione è disponibile. (Potrebbero essere necessari alcuni secondi dopo l'avvio dell'applicazione per rendere disponibile la posizione.) In caso contrario, è sufficiente tornare dal metodo senza modificare la regione. (Potresti, ovviamente, mostrare un avviso che informa l'utente di ciò che sta accadendo e riprovare tra 10 secondi circa)

Se la posizione è disponibile, la tua app calcola lo span per la regione in cui si trova l'utente. In questo caso, il seguente codice

Distanza distanzaLocale = MAX (posizione 4 * orizzontaleAccuratezza, 500);

calcola lo span per essere quattro volte l'accuratezza orizzontale del dispositivo (ma non meno di 1 000 metri). horizontalAccuracy è un raggio di incertezza data l'accuratezza del dispositivo; cioè, l'utente è da qualche parte all'interno di quella cerchia.

Quindi si chiama la funzione MKCoordinateRegionMakeWithDistance che crea una nuova MKCoordinateRegion dai valori di coordinate e distanza specificati.

Se non si desidera modificare l'intervallo, è possibile semplicemente impostare la proprietà centerCoordinate della vista Mappa su userLocation e ciò avrebbe centrato la regione nella coordinata UserLocation senza modificare lo span.

Quando l'utente tocca il pulsante Posizione, si modifica il titolo sul pulsante sul titolo della mappa e si modifica @selector in (goToDestination:). Si accede al pulsante sull'iPad nella barra degli strumenti itemsArray e su iPhone tramite navigationItem.

Ciò significa che la prossima volta che l'utente tocca il pulsante, verrà inviato il messaggio goToDestination, quindi è meglio aggiungere il codice a MapController. m. Questo imposta la regione nella regione di destinazione e riporta il titolo del pulsante a Locate.

- (void) goToDestination: (id) sender {[self setInitialRegion]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * itemsArray = self. barra degli strumenti. elementi; UIBarButtonItem * locateButton = [itemsArray objectAtIndex: [itemsArray count] -1]; locateButton. action = @selector (goToLocation:); locateButton. title = @ "Locate";} else {self. navigationItem.rightBarButtonItem. action = @selector (goToLocation:); se stesso. navigationItem. rightBarButtonItem. title = @ "Locate";}}

Ora esegui la tua app. Poiché hai già due annotazioni sulla mappa di New York, potresti voler impostare il simulatore per utilizzare una posizione distante come San Francisco. In questo modo, puoi facilmente vedere che la mappa funziona.

Dato che hai la posizione dell'utente, potresti essere tentato di usarlo per centrare la mappa, e ciò funzionerebbe bene, a patto che inizi il meccanismo di localizzazione non appena il programma verrà lanciato.

Il problema è che l'hardware potrebbe impiegare un po 'di tempo per trovare la posizione corrente e, se non si attende abbastanza a lungo, si ottiene un errore. È possibile aggiungere il codice per centrare la mappa su un metodo che viene eseguito successivamente, come

- (void) observValueForKeyPath: (NSString *) keyPath ofObject: (id) oggetto change: (NSDictionary *) cambia contesto: (void *) context {

Questo messaggio viene inviato non appena la mappa inizia a ricevere le informazioni sulla posizione, ma vedrai una vista iniziale e quindi una rivisualizzazione della vista centrata. Per ragioni estetiche, è necessario inizializzare MapController e MapView all'avvio del programma: un esercizio per il lettore.

Come aggiungere un pulsante di posizione corrente alla tua app iOS - dummies

Scelta dell'editore

Impostazioni della fotocamera per il fotografo naturalista - manichini

Impostazioni della fotocamera per il fotografo naturalista - manichini

Hai una fotocamera reflex digitale e vuoi fotografare la fauna selvatica. Se sei pronto per andare in safari con la tua fotocamera, continua a leggere. Queste impostazioni della fotocamera suggerite per la fotografia naturalistica ti aiuteranno a ottenere scatti fantastici. Quando fotografi animali selvatici, devi sapere qualcosa sugli animali che stai fotografando. Prima di ottenere il tuo digitale ...

Impostazioni della fotocamera per fotografare un paesaggio acquatico - manichini

Impostazioni della fotocamera per fotografare un paesaggio acquatico - manichini

L'acqua ferma è un soggetto interessante per un fotografo. I laghi possono essere corpi d'acqua poco profondi con vegetazione sulle coste o possono essere laghi di montagna scavati dai ghiacciai. Un lago salubre brulica di pesci. Dove trovi il pesce, troverai altri animali selvatici che cenano su detto pesce. Le paludi sono letteralmente ...

Acquisizione di close-up con obiettivi zoom standard - dummies

Acquisizione di close-up con obiettivi zoom standard - dummies

Fotografia ravvicinata è una categoria che è possibile perseguire molto efficacemente con un obiettivo zoom standard. Come nel caso dei teleobiettivi, si ingrandisce per ingrandire il soggetto. La differenza fondamentale tra i due, tuttavia, è che in genere sei più vicino quando scatti un primo piano.

Scelta dell'editore

Esegui gestione basata su browser usando Hybridfox - dummies

Esegui gestione basata su browser usando Hybridfox - dummies

Hybridfox fornisce una soluzione di gestione semplificata ma limitata per un numero di ambienti cloud: AWS, Eucalyptus, OpenStack, OpenNebula e HP Cloud. L'obiettivo di questo prodotto è di consentire all'utente di utilizzare un ambiente a browser singolo, Firefox, per gestire senza problemi gli ambienti cloud supportati. È possibile passare da un ambiente cloud all'altro senza utilizzare un'interfaccia diversa per ...

Servizi AWS gratuiti - manichini

Servizi AWS gratuiti - manichini

Nell'osservazione delle pagine AWS (Amazon Web Services), potresti aver notato che non lo fanno t fornire un unico elenco di tutti i servizi gratuiti. Quello che ottieni invece sono vari mix di servizi che ti dicono qualcosa sui servizi ma non ti aiutano davvero a capire quali servizi sono effettivamente disponibili. Questa tabella elenca ...

Esecuzione di download di dati tramite MySQL Workbench con AWS - dummies

Esecuzione di download di dati tramite MySQL Workbench con AWS - dummies

Download di dati si verificano normalmente quando si desidera creare un copia locale dei dati con cui hai lavorato nel cloud AWS. Esistono tutti i tipi di motivi per eseguire questa attività, con le prestazioni di backup e delle applicazioni che costituiscono le due esigenze più comuni. Normalmente, il download dei dati va in un database di sola lettura perché ...

Scelta dell'editore

Come utilizzare le viste ad hoc in SharePoint 2013 - dummies

Come utilizzare le viste ad hoc in SharePoint 2013 - dummies

Gli utenti possono creare viste ad hoc in qualsiasi Viste standard o Foglio dati in SharePoint 2013 utilizzando le intestazioni delle colonne per ordinare e filtrare i dati al volo. Queste modifiche ad hoc non vengono salvate con l'app come sono viste definite. Aiutare gli utenti a essere produttivi utilizzando queste opzioni ad hoc ...

Come utilizzare i gruppi di SharePoint - dummies

Come utilizzare i gruppi di SharePoint - dummies

SharePoint utilizza i gruppi per gestire il processo di concessione a qualcuno dell'accesso al contenuto in un luogo. Ogni gruppo di SharePoint esegue il mapping a un insieme di autorizzazioni che definiscono le attività che un utente può eseguire. La maggior parte degli utenti rientra in uno dei tre gruppi predefiniti di SharePoint: Visitatori del sito: concede l'accesso di sola lettura al sito e consente ...

Come utilizzare i servizi di accesso in linea di SharePoint - dummies

Come utilizzare i servizi di accesso in linea di SharePoint - dummies

Accesso I servizi sono un componente di SharePoint Online, che fa parte della suite di prodotti Office 365, che consente di pubblicare l'applicazione di accesso in un sito di SharePoint. Tutti i moduli, i dati e i report creati in Access vengono importati in SharePoint e l'applicazione diventa immediatamente un'applicazione basata su Web multiutente che ...