begyndt med google maps for androide: avanceret

, begyndt med google maps for androide: avanceret,,,,, 24,,,,,,,,, 32,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet begyndt med google maps for androide. begyndt med google maps for androide: intermediategetting begyndte med google maps for androide: avancerede, 1.indledning, mens standardtræk af google maps er utrolig nyttigt, vil det være, at du ønsker at gøre lidt mere.heldigvis, google har skabt et open source - bibliotek indeholdende en række værker, at androide udviklere kan bruge til at få deres ansøgninger endnu bedre med bedre kort. i denne forelæsning, vil du lære at bruge denne nytte bibliotek at tilføje varme kort visualitioner for deres data, ligger et stort antal markører for lettere forbrug og anvendelse forskellige nyttige metoder til at arbejde med den sfæriske karakter af jorden eller tegning ruter på vejene.,, kilden filer til denne lektion kan findes på github., 2.fælde, i første   resten af denne serie, jeg gik over, hvordan man opretter et projekt med google udvikler konsol og tilføje en api - nøglen til din liste.for resten, - - må du få en api - nøgle og oprette deres projekt med en   åbenbart som beskrevet her.,, åben  , build.gradle, og tilføje to nye former for afhængighed, en for spille tjenester til brug google maps, og en   for google maps utils   bibliotek.,, udarbejdelse af kom -. google. androide. gms spiller tjenesteydelser kort: 7.8.0 "udarbejde kom. google. kort. androide: androide kort utils: 0,4, vil jeg bemærke, at google maps utils   bibliotek er teknisk set stadig   i beta, selv om det   har været til rådighed for de sidste to år.når du har indført disse biblioteker og synkroniseret projektet, har du brug for at ajourføre de layout dokumentation for, mainactivity -  , så det bruger skik fragment vist nedenfor.,, < relativelayout xmlns: androide = "http://schemas.android.com/apk/res/android" xmlns: værktøj = "http://schemas.android.com/tools" androide: layout_width = "match_parent" androide. layout_height = "match_parent" androide: paddingleft = "@ dimension /activity_horizontal_margin" androide: paddingright = "@ dimension /activity_horizontal_margin" androide: paddingtop = "@ dimension /activity_vertical_margin" androide: paddingbottom = "@ dimension /activity_vertical_margin" værktøjer: forbindelse = ". mainactivity" > < fragment androide: id = "@ + id /list_fragment" androide: layout_width = "match_parent "androide: layout_height =" match_parent "androide: navn =" kom. tutsplus. mapsdemo. stykket. utilslistfragment "/> < /relativelayout >,, skabe, utilslistfragment,   klasse, der er anvendt), således at det viser en liste over poster, der repræsenterer de forskellige dele biblioteket vil du lære i denne forelæsning.,, offentlige klasse utilslistfragment udvider listfragment {@ tilsidesætte offentlige tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); arrayadapter < snor > adapter = nye arrayadapter < snor > (getactivity(), android.r.layout.simple_list_item_1); snor [] poster = getresources(). getstringarray (r.array.list_items); adapter. addall (nye arraylist (arrays. aslist (punkter)); setlistadapter (adapter)} @ tilsidesætte offentlige tomrum onlistitemclick (listview l, betragtning v, int holdning, lang id) (super. onlistitemclick (l, v, position, id) - punkt = ((textview) v). gettext(). tostring(); hvis (getstring (r.string.item_clustering). equalsignorecase (punkt)) (startactivity (nye hensigt (getactivity(), clustermarkeractivity.class)} andre, hvis (getstring (r.string.item_heat_map). equalsignorecase (punkt)) (startactivity (nye hensigt (getactivity(), heatmapactivity.class)} andre, hvis (getstring (r.string.item_polylines). equalsignorecase (punkt)) (startactivity (nye hensigt (getactivity(), polylineactivity.class)} andre, hvis (getstring (r.string.item_spherical_geometry). equalsignorecase (punkt)) (startactivity (nye hensigt (getactivity(), sphericalgeometryactivity.class)}}}, hver af de strenge   er defineret og anbringes i en streng system,   for ensartethed.,, og lt; snor navn = "item_clustering" > klynger < /snor > < snor navn = "item_heat_map" > varme kort < /snor > < snor navn = "item_polylines" > polyline afkodning < /snor > < snor navn = "item_spherical_geometry" > sfærisk geometri utils < /snor > < snor array navn = "list_items" > < post > @ snor /item_clustering < /post > < post >@ snor /item_heat_map < /post > < post > @ snor /item_polylines < /post > < post > @ snor /item_spherical_geometry < /post > < /snor array >,,,,,, når din liste er til rådighed, du er nødt til at skabe, basemapactivity -, som behandler alle de fælles kort tilhørende fælde, for hver af de aktiviteter, som de f.eks. vil bygge videre på.det  , aktiviteter,   initializes en, googlemap og zoomer kameraet i et bestemt område.i dette tilfælde er det areal, der er   denver i colorado, usa. alt i denne klasse skal ser bekendt ud fra de to sidste artikel i denne serie.,, offentlige abstrakt klasse, basemapactivity udvider appcompatactivity (beskyttet latlng mcenterlocation = nye latlng (39.7392, -104.9903) beskyttet googlemap mgooglemap; @ tilsidesætte beskyttede tomrum oncreate (bundle savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (getmaplayoutid()); initmapifnecessary();} @ tilsidesætte beskyttede tomrum onresume() {super. onresume(); initmapifnecessary();} beskyttede tomrum initmapifnecessary() (hvis (mgooglemap!= null) {tilbage;} mgooglemap = ((mapfragment) getfragmentmanager(). findfragmentbyid (r.id.map)). getmap(); initmapsettings(); initcamera();} beskyttede tomrum initcamera() {cameraposition holdning = cameraposition. builder(). mål (mcenterlocation). - (getinitialmapzoomlevel()). build(); mgooglemap. animatecamera (cameraupdatefactory. newcameraposition (stilling), nul);) beskyttet int getmaplayoutid() {tilbage r.layout.activity_map;} beskyttede flyde getinitialmapzoomlevel() {tilbage 12.0f;} beskyttede abstrakt tomrum initmapsettings();}, nu.du har bygget på det oprindelige projekt, kan du fortsætte til næste afsnit, hvis man vil skabe en ny aktivitet, for hver nytte, at vi kommer til at   omfatter i denne forelæsning., 3.varme, varme, kort, kort er en fremragende måde at visuelt repræsenterer koncentrationer af data peger på et kort.google maps utils bibliotek gør det nemt at føje dem til en ansøgning.til at begynde med, skabe en ny, basemapactivity, ved navn  , heatmapactivity, og tilføje det til din androidmanifest.xml, fil.i toppen af klassen, erklære, heatmaptileprovider,  , som vi bruger til at opbygge den kort - overlay -.,, private heatmaptileprovider mprovider;,,, basemapactivity, en metode, der hedder, initmapsettings,   kaldes, der giver dig mulighed for at tilføje customizations til kortet.for denne aktivitet, er du nødt til at   tilsidesætte denne metode til at få en, arraylist, af, latlng,   genstande, der er anvendt til at generere de  , heatmaptileprovider,   objekt.,, tjenesteyderen har forskellige metoder, der kan anvendes til at ændre udseende af din varme kort, såsom gradient farver den radius for hvert punkt, og vægten af hvert punkt.  , når deres leverandør er opbygget, kan du skabe varme kort, tileoverlay, og anvender det på dit kort, tilsidesætter beskyttede tomrum initmapsettings() {arraylist (< latlng > steder = generatelocations(); mprovider = nye heatmaptileprovider. builder(). data (steder). build(); mprovider. setradius (heatmaptileprovider.default_radius); mgooglemap. addtileoverlay (nye tileoverlayoptions().tileprovider (mprovider)), i ovennævnte gennemførelse af initmapsettings,,  , generatelocations,   er en hjælper, metode, der skaber 1000, latlng, holdninger omkring de centrale kort position.,, private arraylist < latlng > generatelocations() {arraylist < latlng > steder = ny arraylist < latlng > c); dobbelt bredde; dobbelt lng tilfældige generator = nye random(); int (i = 0. jeg < 1000; jeg + +) (lat = generator. nextdouble() /3; lng = generator. nextdouble() /3; hvis (generator. nextboolean()) (lat = - lat.} hvis (generator. nextboolean()) (lng = - lng} steder. der tilsættes (nye latlng (mcenterlocation.latitude + lat, mcenterlocation.longitude + lng)} tilbage steder;}, når du er færdig med at gennemføre  , initmapsettings,   og generatelocations, kan du køre din app og klik på det varme sektor at se det i praksis.,,,,, 4.klynger markører, når et kort har en masse data peger på et lille område, kan det få rodet meget hurtigt, som brugeren zoomer ud.ikke kun det, men med alt for mange   markører, der vises på en gang, kan medføre visse anordninger farten betydeligt., med henblik på at bidrage til at afhjælpe nogle af de frustrationer, som følge af disse spørgsmål, du kan google maps utils bibliotek animere deres markører i klynger.den første ting du skal gøre, er at skabe en ny model objekt, der gennemfører den, clusteritem interface.denne model skal gennemføre, getposition,   metode fra  , clusteritem,   grænseflade for at returnere en gyldig, latlng, objekt.,, offentlige klasse clustermarkerlocation gennemfører clusteritem (private latlng holdning; offentlige clustermarkerlocation (latlng latlng) {holdning = latlng;} @ tilsidesætte offentlige latlng getposition() {tilbage holdning;} offentlige eller setposition (latlng holdning) (this.position = holdning;}}, med den model, der  , du kan skabe en ny aktivitet,  , clustermarkeractivity, og tilføje det til din liste.når du sæt dit kort, du har brug for at skabe en, clustermanager, forbinder den med din, googlemap, og   tilføje, latlng, holdninger, clustermarkerlocations, til, clustermanager til nytte ved, hvad den skal klynge.tag et kig på gennemførelsen af initmarkers, til bedre at forstå, hvordan det her fungerer.,, private tomrum initmarkers() {clustermanager < clustermarkerlocation > clustermanager = nye clustermanager < clustermarkerlocation > (det mgooglemap); mgooglemap. setoncamerachangelistener (clustermanager); dobbelt bredde; dobbelt lng tilfældige generator = nye random(); int (i = 0. jeg < 1000; jeg + +) (lat = generator. nextdouble() /3; lng = generator. nextdouble() /3; hvis (generator. nextboolean()) (lat = - lat.} hvis (generator. nextboolean()) (lng = - lng) clustermanager. additem (nye clustermarkerlocation (nye latlng (mcenterlocation.latitude + lat, mcenterlocation.longitude + lng)))), i denne stikprøve, skaber vi 1000 vilkårlige punkter til at vise og tilføje dem på kortet.google maps utils   bibliotek tager sig af alt andet for os.,,,,,,,, 5.   andre   værker, ud over de sidste to punkter, google maps utils bibliotek er fuld af små nyttige tjenester.hvis du har mange forskellige punkter, der udgør en rute, kan du registrere dem som en polyline   og tilføje, at polyline til dit kort efter, polyutil,.dette vil vise en vej mellem hver af de punkter på kortet.,, offentlige klasse polylineactivity udvider basemapactivity {menig static sidste snor polyline = "gsqqfxxu_syrltys @ npakhazy {msvc er auhwbb} lil @} [gocqge



Previous:
Next Page: