Hjem Sosiale medier Hvordan du legger til en gjeldende plasseringsknapp i din iOS-app - dummies

Hvordan du legger til en gjeldende plasseringsknapp i din iOS-app - dummies

Video: Slik legger du til andre banker i mobil- og nettbank | Sparebanken Sør 2024

Video: Slik legger du til andre banker i mobil- og nettbank | Sparebanken Sør 2024
Anonim

Det er enkelt å legge til en knapp i verktøylinjen i din iOS-app for å zoome inn på gjeldende plassering og deretter tilbake til kartområdet og spenningen du for øyeblikket viser.

Legg til fet skrift for å legge til knappen i MapController-metoden viewDidLoad.

- (void) viewDidLoad {[super viewDidLoad]; selv. mapView. delegere = selv; selv. mapView. showsUserLocation = YES; [self setInitialRegion]; RTAppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; hvis ([[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. tekst = [selvbildeTitle]; UIBarButtonItem * titleView = [[UIBarButtonItem alloker] initWithCustomView: titleLabel]; UIBarButtonItem * flexibleSpace = [[UIBarButtonItem alloker] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace mål: null handling: null]; flexibleSpace. bredde = 1. 0; NSMutableArray * itemsArray = [selv. verktøylinjen. elementer mutableCopy]; [itemsArray insertObject: flexibleSpace atIndex: [itemsArray count] -2]; [itemsArray insertObject: titleView atIndex: [itemsArray count] -2]; [selv. verktøylinje setItems: itemsArray animated: NO];} else {self. title = [appDelegate. tur mapTitle];} [self addAnnotations]; UIBarButtonItem * locateButton = [[UIBarButtonItem alloc] initWithTitle: @ "Finn" stil: UIBarButtonItemStyleBordered mål: selv handling: @selector (goToLocation:)];; hvis ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { NSMutableArray * itemsArray = [selv. verktøylinjen. elementer mutableCopy]; [itemsArray insertObject: locateButton atIndex: [itemsArray count]]; [selv. verktøylinje setItems: itemsArray animated: NO]; } else { selv. navigationItem. rightBarButtonItem = locateButton; } }

Når brukeren klikker på Locate-knappen du lager her, har du angitt at goToLocation: meldingen skal sendes [handling: @selector (goToLocation:)] til MapController: selv).

UIBarButtonItem * locateButton = [[UIBarButtonItem alloc] initWithTitle: @ "Finn" -stil: UIBarButtonItemStylePlain mål: self action: @selector (goToLocation:)]; selv. navigationItem. rightBarButtonItem = locateButton;

Ikke glem å gå tilbake til et sted du må velge en simulert posisjon hvis du bruker simulatoren.

Deretter legger du goToLocation: -metoden til MapController. m.

MKUserLocation * annotation = selv. mapView. userLocation; CLLocation * location = annotasjon. plassering; hvis (nil == plassering) returnere; CLLocationDistance avstand = MAX (4 * sted. HorizontalAccuracy, 500); MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (plassering. Koordinat, avstand, avstand); [selv. mapView setRegion: region animated: NO]; hvis ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * itemsArray = selv. verktøylinjen. eks; UIBarButtonItem * locateButton = [itemsArray objectAtIndex: [itemsArray count] -1]; locateButton. action = @selector (goToDestination:); locateButton. title = @ "Destinasjon";} else {self. navigationItem. rightBarButtonItem. action = @selector (goToDestination:); selv. navigationItem. rightBarButtonItem. title = @ "Destinasjon";}}

Når brukeren klikker på Locate-knappen, kontrollerer appen din først for å se om plasseringen er tilgjengelig. (Det kan ta noen sekunder etter at applikasjonen starter for at plasseringen skal bli tilgjengelig.) Hvis ikke, går du rett og slett tilbake fra metoden uten å endre regionen. (Du kan selvfølgelig vise et varsel som informerer brukeren om hva som skjer og å prøve igjen om 10 sekunder eller så)

Hvis plasseringen er tilgjengelig, beregner appen spenningen for regionen brukeren flytter til. I dette tilfellet er følgende kode

CLLocationDistance avstand = MAX (4 * sted. HorizontalAccuracy, 500);

beregner spenningen for å være fire ganger horisontalAksikkerheten til enheten (men ikke mindre enn 1 000 meter). horizontalAccuracy er en usikkerhetsradius gitt nøyaktigheten av enheten; det vil si at brukeren er et sted innenfor den sirkelen.

Du kaller deretter MKCoordinateRegionMakeWithDistance-funksjonen som lager et nytt MKCoordinateRegion fra de angitte koordinat- og avstandsverdiene.

Hvis du ikke vil endre spekteret, kan du ganske enkelt sette kartvisningens sentrale koordinategenskap til userLocation, og det ville ha sentrert regionen i brukerplasseringskoordinatet uten å endre spannet.

Når brukeren klikker på plasseringsknappen, endrer du tittelen på knappen til karttittelen og endrer @selectoren til (goToDestination:). Du får tilgang til knappen på iPad i verktøylinjen itemsArray og på iPhone via navigasjonsenheten.

Dette betyr at neste gang brukeren trykker på knappen, sendes goToDestination: meldingen, så du må legge til koden til MapController. m. Dette setter regionen tilbake til destinasjonsområdet og bytter knappens tittel tilbake til Locate.

- (void) goToDestination: (id) avsender {[self setInitialRegion]; hvis ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * itemsArray = selv. verktøylinjen. eks; UIBarButtonItem * locateButton = [itemsArray objectAtIndex: [itemsArray count] -1]; locateButton. action = @selector (goToLocation:); locateButton. title = @ "Locate";} annet {selv. navigationItem.rightBarButtonItem. action = @selector (goToLocation:); selv. navigationItem. rightBarButtonItem. title = @ "Locate";}}

Kjør nå din app. Fordi du allerede har to merknader på kartet over New York, vil du kanskje sette simulatoren til å bruke et fjernt sted som San Francisco. På den måten kan du lett se at kartet fungerer.

Fordi du har brukerens plassering, kan du bli fristet til å bruke det for å sentrere kartet, og det ville fungere bra, så lenge du starter søkemåten når du starter programmet.

Problemet er at maskinvaren kan ta en stund for å finne den nåværende plasseringen, og hvis du ikke venter lenge nok, får du en feil. Du kan legge til koden for å sentrere kartet til en metode som kjøres senere, for eksempel

- (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) objekt endring: (NSDictionary *) endre kontekst:) kontekst {

Denne meldingen sendes så snart kartet begynner å få posisjonsinformasjon, men du vil se en innledende visning og deretter et redisplay av den sentriske visningen. Av estetiske grunner trenger du virkelig å initialisere MapController og MapView ved oppstart av programmet - en øvelse for leseren.

Hvordan du legger til en gjeldende plasseringsknapp i din iOS-app - dummies

Redaktørens valg

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Skjermbildet i QuickBooks Modify Report dialogboksen lar deg kontrollere rapportintervalldatoen, rapportgrunnlaget, kolonnene og en annen formatering. Bokstavene Rapporter datoområde - Datoer, Fra og Til - gjør det samme som Datoer, Fra og Til bokser i Rapportvinduet. Disse boksene lar ...

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Hvis du klikker Tilpass rapport, QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Redaktørens valg

Administrere Cloud Computing Resources - dummies

Administrere Cloud Computing Resources - dummies

I teorien bør cloud computing-tjenester ikke være forskjellig fra ressursene i din eget miljø, bortsett fra at de bor eksternt. Ideelt sett har du en komplett visning av cloud computing-ressursene du bruker i dag, eller vil kanskje bruke i fremtiden. I de fleste skymiljøer kan kunden bare få tilgang til ...

Tips for Going Cloud med datanettverkene dine - dummies

Tips for Going Cloud med datanettverkene dine - dummies

Beregning med datanettverket ditt kan være, hva skal du gjøre for å ta nettverket ditt mot skyen? Her er noen anbefalinger: Ikke stole på en dårlig Internett-tilkobling. Først og fremst, før du tar noen av nettverksoperasjonene i skyen, gjør du ...

Nettverkstjenester levert gjennom Cloud Computing - dummies

Nettverkstjenester levert gjennom Cloud Computing - dummies

Tre forskjellige typer nettverkstjenester kan leveres via skyen: applikasjoner , plattformer og tjenester (infrastruktur). I de følgende avsnittene beskrives disse tre typer skyttjenester i større detalj. Programmer i skyen Vanligvis kalt Software as a Service (SaaS), fullt funksjonelle applikasjoner kan leveres via skyen. En av ...

Redaktørens valg

10 Hadoop Ressurser verdt en bokmerke - dummies

10 Hadoop Ressurser verdt en bokmerke - dummies

Følgende er ti fantastiske Hadoop-ressurser som er verdige til å skape en bokmerke i nettleseren din. Disse ressursene hjelper deg med å skape en livslang læringsplan for Hadoop. Sentralnervesystemet: Apache. org Apache Software Foundation (ASF) er det sentrale fellesskapet for open source-programvareprosjekter. Ikke bare et prosjekt kan være et Apache-prosjekt - ...

Data transformasjon i Hadoop - dummies

Data transformasjon i Hadoop - dummies

Ideen om Hadoop-inspirerte ETL motorer har fått mye trekkraft de siste årene. Hadoop er trods alt en fleksibel datalagrings- og behandlingsplattform som kan støtte store mengder data og operasjoner på dataene. Samtidig er det feiltolerant, og det gir mulighet for kapital- og programvarekostnad ...

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i forskjellige slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk. HDFS har ingen ...