package Ġcom . app . sl iding up . helper Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġcom . app . sl iding up . model . events . Event Location Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . model .* Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠGoogle Map Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlast Clicked Ġ: ĠMarker ? Ġ Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġevent Location Ġwhere Ġto Ġdraw Ġthe Ġ[ Marker ] ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ Marker Options ] Ġwith Ġgiven Ġproperties Ġadded Ġto Ġit . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġadd Marker ( event Location Ġ: ĠEvent Location ): ĠMarker Options ? Ġ= ĊĠĠĠĠĠĠĠ Ġevent Location . latitude ?. let Ġ{ Ġevent Location . longitude ?. let Ġ{ Ġdata Ġ-> ĠLat Lng ( it , Ġdata ) Ġ} Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( it ). anchor ( 0 . 5 f , Ġ 0 . 5 f ). icon ( Bitmap Descriptor Factory . default Marker ( Bitmap Descriptor Factory . H UE _ AZURE )) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġlat Lng Ġwhere Ġto Ġdraw Ġthe Ġcurrent Ġlocation Ġ[ Marker ] ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ Marker Options ] Ġwith Ġgiven Ġproperties Ġadded Ġto Ġit . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġadd Current Location Marker ( lat Lng Ġ: ĠLat Lng ) Ġ: ĠMarker Options Ġ= ĠMarker Options (). position ( lat Lng ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġlatitude ĊĠĠĠĠ Ġ* Ġ@ param Ġlongitude ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ LatLng ] ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġget LatLng ( latitude Ġ: ĠDouble , Ġlongitude Ġ: ĠDouble ) Ġ= ĠLat Lng ( latitude , Ġlongitude ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġsets Ġthe Ġdefault Ġgoogle Ġmap Ġsettings . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgoogle Map Ġto Ġset Ġdefault Ġsettings . ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġdefault Map Settings ( google Map Ġ: ĠGoogle Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is Zoom Controls Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is Map Toolbar Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is Rotate Gest ures Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is T ilt Gest ures Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġgoogle Map . ui Settings . is Comp ass Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġgoogle Map . is Build ings Enabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġsets Ġthe Ġmarker Ġcolor Ġbased Ġon Ġthe Ġclick Ġof Ġmarker ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmarker Ġthe Ġ[ Marker ] ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġchange Marker Color ( marker Ġ: ĠMarker ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Clicked Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Clicked ?. setIcon ( Bitmap Descriptor Factory . default Marker ( Bitmap Descriptor Factory . H UE _ AZURE )) ĊĊĠĠĠĠĠĠĠ Ġmarker . z Index Ġ= Ġ 2 . 5 f ĊĠĠĠĠĠĠĠ Ġmarker . setIcon ( Bitmap Descriptor Factory . default Marker ( Bitmap Descriptor Factory . H UE _ BLUE )) ĊĊĠĠĠĠĠĠĠ Ġlast Clicked Ġ= Ġmarker ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġis Ġto Ġdefine Ġthe ĠPoly line ĠUI ĠProperty ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcolor Ġthe Ġ[ Int ] ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ Polyline Options ] ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġget Poly Line Options ( color Ġ: ĠInt ): ĠPoly line Options ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠPoly line Options () ĊĠĠĠĠĠĠĠ Ġoptions . width ( 1 0 f ) ĊĠĠĠĠĠĠĠ Ġoptions . color ( color ) ĊĠĠĠĠĠĠĠ Ġoptions . start Cap ( Square Cap ()) ĊĠĠĠĠĠĠĠ Ġoptions . end Cap ( Square Cap ()) ĊĠĠĠĠĠĠĠ Ġoptions . joint Type ( Joint Type . ROUND ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġis Ġto Ġanimate Ġthe ĠPoly Line Ġdrawn Ġb / w Ġ 2 Ġpoints ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblack Poly Line Ġthe Ġ[ Polyline ] ĊĠĠĠĠ Ġ* Ġ@ param Ġgrey Poly Line Ġthe Ġ[ Polyline ] ĊĠĠĠĠ Ġ* Ġ@ param Ġlist LatLng Ġthe Ġ[ ArrayList [ LatLng ]] ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġanimate Poly Line ( black Poly Line Ġ: ĠPoly line ?, Ġgrey Poly Line Ġ: ĠPoly line ?, Ġlist LatLng Ġ: ĠArrayList < LatLng >) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Animator Ġ= ĠValue Animator . of Int ( 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġvalue Animator . duration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġvalue Animator . interpol ator Ġ= ĠLinear Interpolator () ĊĊĠĠĠĠĠĠĠ Ġvalue Animator . add Update Listener Ġ{ Ġanim ator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Lng List Ġ= Ġblack Poly Line ?. points ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Point Size Ġ= Ġlat Lng List ?. size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimated Value Ġ= Ġanim ator . animated Value Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Points Ġ= Ġanimated Value Ġ* Ġlist LatLng . size Ġ/ Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Point Size !! Ġ< Ġnew Points ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Lng List . addAll ( list LatLng . sub List ( initial Point Size , Ġnew Points )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack Poly Line . points Ġ= Ġlat Lng List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvalue Animator . addListener ( object Ġ: ĠAn imator . Animator Listener ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( anim ator Ġ: ĠAn imator ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( anim ator : ĠAn imator ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblack LatLng Ġ= Ġblack Poly Line ?. points ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrey LatLng Ġ= Ġgrey Poly Line ?. points ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrey LatLng ?. clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack LatLng ?. let Ġ{ Ġgrey LatLng ?. addAll ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack LatLng ?. clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack Poly Line ?. points Ġ= Ġblack LatLng ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrey Poly Line ?. points Ġ= Ġgrey LatLng ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack Poly Line ?. z Index Ġ= Ġ 2 f ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( anim ator Ġ: ĠAn imator ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( anim ator Ġ: ĠAn imator ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġvalue Animator . start () ĊĠĠĠ Ġ} Ċ }