package Ġtech . sk ot . libraries . map Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroidx . collection . L ru Cache Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Default Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . MapView Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġcom . google . android . gms . maps . model . LatLng Bounds Ċ import Ġtech . sk ot . core . components . SK Activity Ċ import Ġtech . sk ot . core . components . SK Component View Ċ import Ġcom . google . android . gms . maps . model . LatLng Ġas ĠLat Lng G Map ĊĊ Ċ class ĠSK MapView ( ĊĠĠĠ Ġoverride Ġval Ġproxy : ĠSK MapView Proxy , ĊĠĠĠ Ġactivity : ĠSK Activity , ĊĠĠĠ Ġfragment : ĠFragment ?, ĊĠĠĠ Ġval Ġmap View : ĠMap View Ċ ) Ġ: ĠSK Component View < MapView >( proxy , Ġactivity , Ġfragment , Ġmap View ), ĠSK Map RAI Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġmap Interaction Helper : ĠMap Interaction Helper ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġmemory Cache : ĠL ru Cache < String , ĠBitmap Descriptor Container > ĊĠĠĠ Ġprivate Ġvar Ġf used Location Client : ĠF used Location Provider Client Ġ= ĊĠĠĠĠĠĠĠ ĠLocation Services . getF used Location Provider Client ( context ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġuse Ġit Ġto Ġcreate ĠBitmap Descriptor Ġin Ġcase Ġof Ġ Ġ[ Custom Marker ][ SK Map VC . Custom Marker ] Ġuse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġvar ĠonCreate Custom Marker Icon : Ġ(( SK Map VC . Custom Marker , Ġselected : ĠBoolean ) Ġ-> ĠBitmap )? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Interaction Helper ?. onCreate Custom Marker Icon Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlifecycle Owner . lifecycle . add Observer ( object Ġ: ĠDefault Lifecycle Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Destroy ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . on Destroy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onCreate ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . onCreate ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pause ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Pause ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . on Pause () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resume ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Resume ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . on Resume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . onStart ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . onStart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Stop ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . on Stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġmax Memory Ġ= Ġ( Runtime . get Runtime (). max Memory ()). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġcache Size Ġ= Ġmax Memory Ġ/ Ġ 8 ĊĠĠĠĠĠĠĠ Ġmemory Cache Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠL ru Cache < String , ĠBitmap Descriptor Container >( cache Size ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsize Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap : ĠBitmap Descriptor Container ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġmap Interaction Helper Ġ= Ġwhen Ġ( val Ġsettings Ġ= Ġproxy . map Interaction Settings ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSK Map VC . Map Cluster ing Interaction Settings Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG Map Cluster ing Interaction Helper ( activity , Ġmap View , Ġmemory Cache , Ġsettings ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSK Map VC . Map Normal Interaction Settings Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG Map Interaction Helper ( activity , Ġmap View , Ġmemory Cache ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSK Map VC . Map Custom Interaction Settings Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Ref Custom Interaction Helper [ settings . custom Ref ]?. invoke ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Cache , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . data Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNotImplementedError (" With ĠMap Custom Interaction Settings Ġyou Ġmust Ġprovide Ġa ĠCustom Interaction Helper Ġwith Ġref Ġ${ settings . custom Ref } Ġin Ġmap Ref Custom Interaction Helper Ġ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ}. apply Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . onCreate Custom Marker Icon Ġ= Ġthis @ SK MapView . onCreate Custom Marker Icon Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selected Marker ( selected Marker : ĠSK Map VC . Marker ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Interaction Helper ?. on Selected Marker ( selected Marker ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Markers ( markers : ĠList < SK Map VC . Marker >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Interaction Helper ?. add Markers ( markers ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Lines ( poly lines : ĠList < SK Map VC . Polyline >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Interaction Helper ?. add Lines ( poly lines ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon On Map Clicked ( on Map Clicked : Ġ(( LatLng ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Map Clicked Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Map ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Map Clicked . invoke ( it . latitude Ġto Ġit . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Map ClickListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon On Map Long Clicked ( on Map Long Clicked : Ġ(( LatLng ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Map Long Clicked Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Map Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Map Long Clicked . invoke ( it . latitude Ġto Ġit . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Map ClickListener ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon On Marker Click ( on Marker Click : Ġ(( SK Map VC . Marker ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Interaction Helper ?. on Marker Click Ġ= Ġon Marker Click ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Map Interaction Settings ( map Interaction Settings : ĠSK Map VC . Map Interaction Settings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ Ġgoogle Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Interaction Helper Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Interaction Helper Ġ= Ġwhen Ġ( map Interaction Settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSK Map VC . Map Cluster ing Interaction Settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG Map Cluster ing Interaction Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View Ġ= Ġmap View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Cache Ġ= Ġmemory Cache , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Interaction Settings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSK Map VC . Map Normal Interaction Settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG Map Interaction Helper ( activity , Ġmap View , Ġmemory Cache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSK Map VC . Map Custom Interaction Settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Ref Custom Interaction Helper [ map Interaction Settings . custom Ref ]?. invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory Cache , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Interaction Settings . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠNotImplementedError (" With ĠMap Custom Interaction Settings Ġyou Ġmust Ġprovide Ġa ĠCustom Interaction Helper Ġwith Ġref Ġ${ map Interaction Settings . custom Ref } Ġin Ġmap Ref Custom Interaction Helper Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . onCreate Custom Marker Icon Ġ= Ġthis @ SK MapView . onCreate Custom Marker Icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on On Map Bounds Change ( proxy . on Map Bounds Change ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Marker Click Ġ= Ġproxy . on Marker Clicked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Selected Marker ( proxy . selected Marker ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add Markers ( proxy . markers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add Lines ( proxy . poly lines ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Show Log ( show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMap Logger View . enabled Ġ= Ġshow ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetCurrent Location ( on Result : Ġ( LatLng ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ&& ĠActivity Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġf used Location Client . last Location . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Result ( LatLng ( it . latitude , Ġit . longitude )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Camera Position ( ĊĠĠĠĠĠĠĠ Ġposition : ĠLat Lng , ĊĠĠĠĠĠĠĠ Ġzoom Level : ĠFloat , ĊĠĠĠĠĠĠĠ Ġanimate : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Update Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Update Factory . new LatLng Zoom ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . google . android . gms . maps . model . LatLng ( position . first , Ġposition . second ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom Level ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . animate Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . move Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcenter On Positions ( positions : ĠList < LatLng >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( positions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Lng Bounds Builder Ġ= ĠLat Lng Bounds . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Lng Bounds Builder . include ( LatLng G Map ( it . first , Ġit . second )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlat Lng Bound Ġ= ĠCamera Update Factory . new LatLng Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat Lng Bounds Builder . build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 1 6 Ġ* ĠResources . getSystem (). display Metrics . density ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . animate Camera ( lat Lng Bound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Map Bounds ( on Result : Ġ( SK Map VC . LatLng Bounds ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . projection . visible Region . lat Lng Bounds . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSK Map VC . LatLng Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . northeast . latitude Ġto Ġit . northeast . longitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . sout hw est . latitude Ġto Ġit . sout hw est . longitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon On Map Bounds Change ( on Map Bounds Change : Ġ(( SK Map VC . LatLng Bounds ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Interaction Helper ?. on On Map Bounds Change ( on Map Bounds Change ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Camera Zoom ( zoom Level : ĠFloat , Ġanimate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Update Factory . zoom To ( zoom Level ). let Ġ{ Ġcamera Update Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . animate Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . move Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Missing Permission ") ĊĠĠĠ Ġoverride Ġfun Ġshow My Location Button ( ĊĠĠĠĠĠĠĠ Ġshow : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġon Permission Error : Ġ(() Ġ-> ĠUnit )? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap View . getMap Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap Logger View . d (" enabled Ġmy Location Button Ġ: $ show ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is My Location Enabled Ġ= Ġshow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap Logger View . d (" permission Ġerror Ġ: $ show ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Permission Error ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBitmap Descriptor Container ( bitmap : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Descriptor : ĠBitmap Descriptor Ġ= ĠBitmap Descriptor Factory . from Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ Ġval Ġsize : ĠInt Ġ= Ġbitmap . byte Count ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ref Custom Interaction Helper : ĠMutable Map < Int , Ġ( context : ĠContext , Ġmap View : ĠMap View , Ġmemory Cache : ĠL ru Cache < String , ĠBitmap Descriptor Container >, Ġdata : ĠAny ?) Ġ-> ĠMap Interaction Helper > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map Of () ĊĠĠĠ Ġ} ĊĊ Ċ }