Google Maps API för Android (5 / 7 steg)
Steg 5: Google Maps för mobilen
Bra jobb för att göra det långt! I detta avsnitt kommer vi att täcka hur till tillägga Google Maps till din mobil applikation. Bli upphetsad? Låt oss komma igång!
Koncept:
Google karta layouter för Android bygger i stor utsträckning på fragment. Istället för att skapa din egen, omfattar Google Maps API dem med majoriteten av backend gjort för dig. Som utvecklare, allt du behöver göra är hantera deras livscykel, layout och interaktion. Jag ska täcka alla dessa ämnen nedan.
Layout:
Lägga till en Google-karta till din app är mycket enkel. Eftersom kartorna är fragment, du kan blåsa upp dem i praktiskt taget alla ViewGroup som du vill.
För att starta, öppna activity_main.xml och ta bort standard TextView som placeras i layouten. Istället, dra och släpp en FrameLayout i dess ställe. Ge FrameLayout ett ID som kallas "mapContainer". Din färdiga layout bör se ut så här:
BILD HÄR
Livscykel:
Om du är bekant med fragment från någon tidigare erfarenhet av utveckling, då förstår du hur stora de är. Google Maps är inte annorlunda. API ger ett fragment klass som kallas MapFragment som kan manipuleras att passa. Också, eftersom de är fragment, det innebär att del av deras livscykel och deras layout manipulation hanteras via FragmentManager. Ganska cool va?
Här är där det blir intressant. Öppna din MainActivity.java. På toppen av din klassdeklaration, genomföra OnMapReadyCallback och sedan importera metoden:
allmän klass MainActivity utökar verksamheten implementerar OnMapReadyCallback {
...
public void onMapReady (GoogleMap googleMap) {}
...
Denna callback utlöser när din karta är redo att användas. Vi kommer att lyckas i en minut.
Nu skapa två privata medlemsvariabler till din verksamhet. en för den GoogleMap, en annan för MapFragment. Din kod bör se ut så här:
privat GoogleMap googleMap;
privat MapFragment mapFragment;
Nu kan i din onCreate() metod, skapa fragmentet. För att göra det, gör följande:
...
this.mapFragment = MapFragment.newInstance(); Initiera mapFragment objekt.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.Add (R.id.mapContainer, mapFragment); Blåsa upp mapFragment inne i FrameLayout.
ft.commit(); Genomföra transaktionen.
this.mapFragment.getMapAsync(this); Anger MainActivity som OnMapReady motringning lyssnare...
För att vi ska kunna redigera vår karta senare, behöver vi en referens till det när det väl har skapats. Så, lägga till denna kod till din callback-metod av onMapReady():
this.googleMap = googleMap; Initiera objektet lokala GoogleMap.
Det är det! Vi har genomfört alla motringning lyssnare att vi behöver och har nu en hänvisning till vår GoogleMap objekt. Gå vidare och prova att köra appen på denna punkt. Du bör se din karta blåsa upp till FrameLayout i din activity_main.xml.
Interaktion:
Nu när vi har en referens till våra GoogleMap objekt, finns det en hel del coola saker som vi kan göra. Jag ska visa dig några exempel.
Rita en markör:
Att du vill markera en punkt på kartan. API kan du skapa markörer med valfritt innehåll inuti dem och placera dem på en viss plats. Prova detta i din app för att placera en markör:
...
MarkerOptions markerOptions = ny MarkerOptions();
markerOptions.position (nya LatLng (-12.34, 56.78)) / / markören på ges lat/lng.
.Visible(true) / / synliggöra markören.
.title ("hello world") / / innehåll av marker.
.icon(BitmapDescriptorFactory.fromResource(R.drawable.blue_dot)); Anpassad ikon.
Markör currentMarker = googleMap.addMarker(markerOptions); Lägg till markör och spara.
...
Rita en bana:
Du vet hur riktningar i faktiska Google Maps app drar din rutt på kartan? Väl med hänvisning till din karta objekt, kan du göra något liknande med ett snyggt objekt kallas en polylinje. Polylinjer kan du ansluta prickar mellan flera latitud/longitud koordinater på kartan. Här är ett exempel på en metod som du kan också sätta i din app:
...
Uppdateringar rutten på kartan med en given plats.
privata void updatePrimaryPath (nuvarande LatLng) {
PolylineOptions alternativ = nya PolylineOptions(); Skapa ny polylinje alternativ.
Options.Color(Color.Red).width(5).Visible(true); Polylinje attribut.
om (lastLatLng! = null) {
Options.Add(lastLatLng); Lägg till koordinaten polylinje.
Options.Add(Current); Lägg till koordinaten polylinje.
googleMap.addPolyline(options); Rita polylinje på karta.
}
lastLatLng = nuvarande; Ange den sista använda positionen som den nuvarande.
...
Centrering kamera på en plats:
En sista sak du kan göra med kartan som kommer att vara lätt användbart i din programmering strävanden centrering kameran på en viss latitud/longitud koordinat. Detta låter dig att automatiskt flytta vyn av kartan till olika ställen med olika zoomnivåer. Här är några genomförandet att komma igång:
...
Centrera kartan på en angiven plats med en önskad zoomnivå.
privata void centerMapOnLocation (LatLng loc) {< br > googleMap.animateCamera (CameraUpdateFactory.newLatLngZoom (loc, ZOOM_LEVEL));
}
...
Det finns massor av saker som du kan göra med Google Maps Android API. När du känner dig bekväm med grunderna, Känn dig fri att få utforska API och lägger till nya funktioner i din app.
Om du införlivas med Android bära din MapPlayground app, sedan huvudet på över till nästa steg att lära sig om Google Maps API för Android bära. Annars hoppa över till den sista steget!