iPhone SDK Quick Tip Lansering av Maps In-App

IPhone Maps-programmet er et revolusjonerende program som kombinerer kraften til GPS og Google Maps med et utrolig brukervennlig grensesnitt. Denne raske tipsen vil lære deg hvordan du begynner å utnytte denne funksjonaliteten ved å starte og konfigurere Maps-appen fra ditt iPhone SDK-prosjekt.

Trinn 1. Ta en tur til Paris

Lansering av Maps-programmet i din egen app kan gjøres med bare følgende to kodelinjer:

 UIApplication * app = [UIApplication sharedApplication]; [app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?q=Paris"]]; 

På linje ett, ber vi om en referanse til det øyeblikkelige programeksemplet fra UIApplication-klassen.

På linje to, forteller vi programmet å åpne den medfølgende nettadressen, som i dette tilfellet er en gyldig Google Maps-nettadresse. I stedet for å åpne kartet i Mobile Safari som du kanskje forventer, er applikasjonseksemplet smart nok til å innse at denne forespørselen bedre håndteres av Maps-appen, og vil starte den i stedet.

Merk: iPhone Simulator åpner dessverre ikke Maps-programmet med den ovennevnte koden (Simulatoren har ikke Maps-appen). Du må kjøre denne brikken på en faktisk iPhone OS-enhet for å teste. Kjører denne koden i iPhone Simulator vil starte Google Maps i Mobile Safari.

Voila! Velkommen til Frankrike.

Trinn 2. Konfigurer ekstra parametere

Nå som vi forstår grunnleggende, la oss grave litt dypere inn i funksjonaliteten som tilbys av Maps API.

Nettadressen vi oppgav ovenfor, er formatert som et HTTP GET-innlegg til Google Maps-programmet. Den sender parameteren "q" til verdien av "Paris". "Q" står for spørring, og det er den mest generelle forespørselstypen vi kan lage. Noen få andre brukte parametere inkluderer:

  • ll =: Står for "latittude / lengdegrad" og gir brukeren mye større nøyaktighet når du trekker opp kart. Denne parameteren brukes ofte i forbindelse med GPS på stedet for å plotte en "Du er her" punktvisning. Verdien for denne parameteren må leveres i desimalformat og må være kommaseparert.
  • saddr =: Start- eller "kilde" -adressen som skal brukes når du genererer veibeskrivelser.
  • daddr =: Enden, eller "destinasjon" -adressen som skal brukes når du genererer veibeskrivelser.
  • t =: Type kart som skal vises.
  • z =: Zoomnivået på kartet som skal vises.

Som du kanskje har gjettet, kan du kombinere flere parametre i en GET-forespørsel. Dette gjøres ved å bli med '&' symbolet.

Du finner mer detaljert informasjon om støttede parametere (med eksempler) fra den offisielle Apple Inc.-dokumentasjonen her.

Trinn 3. Send brukeren til Eiffeltårnet

La oss konkludere med et eksempel på hvordan du kan kombinere noen av de egendefinerte parameterne ovenfor og sende brukerne våre til en satellittvisning av Eiffeltårnet.

Eiffeltårnet ligger ved breddegrad 48 ° 51 '32 "nord, lengdegrad 002 ° 17' 45" øst. Denne informasjonen har imidlertid lite bruk for oss i det nåværende formatet. Vi må konvertere graden / minutt / andre format til desimalformatet som kreves av Google Maps ll = parameter.

Det er mange verktøy tilgjengelig for raskt å gjøre dette på nettet, men når jeg jobber med Google maps, liker jeg å bruke et enkelt triks for å generere et breddegrad / lengdepar fra paret. Når du har plasseringen du er interessert i sentrert på skjermen, sett inn følgende kodestykke (hentet herfra) i nettleserens adresselinje og trykk enter:

 javascript: void (. prompt (", gApplication.getMap () getCenter ())); 

Vi er igjen med desimalformatet for breddegrad 48.85812229675187 og lengdegrad 2.294490337371826.

Nå, for å sende brukeren vår direkte til Eiffeltårnet, kan vi lime inn i følgende:

 [app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?ll=48.85812229675187,2.294490337371826"]]; 

Som standard vil dette starte med grafisk karttype. Dette er ikke så imponerende som å se den virkelige ting, så la oss forandre karttypen til satellitt ved å legge til '& t = k' til vår søkte streng:

 [app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?ll=48.85812229675187,2.294490337371826&t=k"]]; 

Dette fungerer, men vårt syn fra toppen er bare litt for nært. La oss gå litt ut ved å sette kartet zoomnivå med '& z = 19':

 [app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?ll=48.85812229675187,2.294490337371826&t=k&z=19"]]; 

Perfekt. La tour eiffel i håndflaten vår.