De iPhone Maps-applicatie is een revolutionair programma dat de kracht van GPS en Google Maps combineert met een ongelooflijk gebruiksvriendelijke interface. Met deze snelle tip leert u hoe u kunt profiteren van deze functionaliteit door de Kaarten-app te starten en te configureren vanuit uw iPhone SDK-project.
Het starten van de Kaarten-applicatie in uw eigen app kan worden gedaan met alleen de volgende twee regels code:
UIApplication * app = [UIApplication sharedApplication]; [app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?q=Paris"]];
In lijn één vragen we om een verwijzing naar de momenteel actieve toepassingsinstantie uit de klasse UIApplication.
Op regel twee vertellen we de toepassing de opgegeven URL te openen, die in dit geval een geldige Google Maps-URL is. In plaats van de kaart in Mobile Safari te openen zoals u zou verwachten, is de toepassingsinstance slim genoeg om te beseffen dat deze aanvraag beter wordt afgehandeld door de Maps-app en wordt deze in plaats daarvan gestart.
Opmerking: Helaas zal de iPhone Simulator de Kaarten-applicatie niet openen met de bovenstaande code (de Simulator heeft de Kaarten-app niet). U moet dit fragment op een iPhone-apparaat laten testen. Als u deze code in de iPhone Simulator uitvoert, wordt Google Maps gestart in Mobile Safari.
Voila! Welkom in Frankrijk.
Nu we de basisbeginselen begrijpen, gaan we nog een beetje dieper in op de functionaliteit die de Maps API biedt.
De URL die we hierboven hebben opgegeven, is opgemaakt als een HTTP GET-bericht voor de Google Maps-app. Het levert de parameter "q" in op de waarde "Parijs". De "q" staat voor query en dit is het meest algemene aanvraagtype dat we kunnen maken. Een paar andere veelgebruikte parameters zijn:
Zoals je misschien al geraden hebt, kun je meerdere parameters combineren in één GET-aanvraag. Dit wordt gedaan door ze samen te voegen met het '&'-symbool.
Meer informatie over ondersteunde parameters (met voorbeelden) vindt u hier in de officiële Apple Inc.-documentatie.
Laten we afsluiten met een voorbeeld van hoe u enkele van de bovenstaande aangepaste parameters kunt combineren en onze gebruikers naar een satellietbeeld van de Eiffeltoren kunt sturen.
De Eiffeltoren bevindt zich op Latitude 48 ° 51 '32 "North, Longitude 002 ° 17' 45" East. Deze informatie heeft echter weinig nut voor ons in het huidige formaat. We moeten de indeling Degree / Minute / Second converteren naar het decimale formaat dat vereist is door Google Maps ll = parameter.
Er zijn veel tools beschikbaar om dit snel online te doen, maar wanneer ik met Google maps werk, vind ik het leuk om een eenvoudige truc te gebruiken om een breedtegraad / lengtegraad-paar van de kaart te genereren. Nadat u de locatie waarin u geïnteresseerd bent gecentreerd op het scherm plaatst, plaatst u het volgende codefragment (vanaf hier opgenomen) in de adresbalk van uw browser en drukt u op enter:
javascript: void (. prompt (", gApplication.getMap () getCenter ()));
We hebben het decimale formaat van de breedtegraad 48.85812229675187 en de lengtegraad 2.294490337371826.
Om onze gebruiker rechtstreeks naar de Eiffeltoren te sturen, kunnen we het volgende plakken:
[app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?ll=48.85812229675187,2.294490337371826"]];
Standaard wordt dit gestart met het grafische kaarttype. Dit is lang niet zo indrukwekkend als het echte zien, dus laten we het kaarttype veranderen in satelliet door '& t = k' toe te voegen aan onze vraagstring:
[app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?ll=48.85812229675187,2.294490337371826&t=k"]];
Dit werkt, maar ons uitzicht vanaf de bovenkant is net iets te dichtbij. Laten we een klein beetje uitstappen door het zoomniveau van de kaart in te stellen met '& z = 19':
[app openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?ll=48.85812229675187,2.294490337371826&t=k&z=19"]];
Perfect. La tour eiffel in de palm van onze hand.