/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 0 - 2 0 1 8 ĠM oo vel ĠGroup ĠGmbH Ġ- Ġm oo vel . com Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . m oo vel . gps recorder player . utils Ċ Ċ import Ġandroid . location . Location Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . Location Source Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . LatLng Bounds Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ fun ĠGoogle Map . setLocation Source ( source : ĠLive Data < Location ?> ) Ġ{ ĊĠĠĠ Ġset Location Source ( object Ġ: ĠLocation Source , ĠObserver < Location ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlistener : ĠLocation Source . On Location Changed Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( t : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnot Null ( listener , Ġt ) Ġ{ Ġcb , Ġl Ġ-> Ġcb . on Location Changed ( l ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeactivate () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource . remove Observer ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġactivate ( l : ĠLocation Source . On Location Changed Listener ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource . observe Fore ver ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ val ĠLocation . lat Lng : ĠLat Lng Ġget () Ġ= ĠLat Lng ( latitude , Ġlongitude ) Ċ Ċ operator Ġfun ĠLat Lng . component 1 () Ġ= Ġlatitude Ċ operator Ġfun ĠLat Lng . component 2 () Ġ= Ġlongitude Ċ Ċ fun ĠGoogle Map . zoom To Polyline ( poly line : ĠList < LatLng >) Ġ{ ĊĠĠĠ Ġval Ġbounds Builder Ġ= ĠLat Lng Bounds . Builder () ĊĠĠĠ Ġpoly line . forEach Ġ{ Ġbounds Builder . include ( it ) Ġ} ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġmove Camera ( Camera Update Factory . new LatLng Bounds ( bounds Builder . build (), Ġ 2 4 . dp To Px ())) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFIXME ĠScreen Ġis Ġtoo Ġsmall Ġto Ġshow Ġthe Ġmap ĊĠĠĠ Ġ} Ċ } Ċ