package Ġcs . ms u connect android Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . app . FragmentManager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Sender Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . design . widget . Navigation View Ċ import Ġandroid . support . v 4 . content . Context Compat . startActivity Ċ import Ġandroid . support . v 4 . view . Gravity Compat Ċ import Ġandroid . support . v 7 . app . ActionBar Drawer Toggle Ċ import Ġandroid . text . Layout Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroid . widget . Toolbar Ċ import Ġbol ts . Task . delay Ċ import Ġcom . google . android . gms . location .* Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . On Map Ready Callback Ċ import Ġcom . google . android . gms . maps . Support Map Fragment Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . location . Location Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . annotation . Raw Res Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . Web Settings Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . android . gms . common . api . Res olvable ApiException Ċ import Ġcom . google . android . gms . location .* Ċ import Ġcom . google . android . gms . maps . model . Polygon Options Ċ import Ġcom . google . android . gms . maps . model . Marker Ċ import Ġcom . google . android . gms . tasks . Tasks Ċ import Ġcs . ms u connect android . R . id . drawer _ layout Ċ import Ġcs . ms u connect android . MS U Connect Objects .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . app _ bar _ main .* Ċ import Ġjava . util .* Ċ import Ġcom . google . firebase . firestore . Geo Point ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠOn Map Ready Callback , ĠGoogle Map . On Info Window ClickListener , ĊĠĠĠĠĠĠĠ ĠNavigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĊĊĠĠĠ Ġoverride Ġfun Ġon Info Window Click ( p 0 : ĠMarker ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( p 0 Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġevent ID Ġ= Ġp 0 . tag Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( event ID Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen URL ( event ID . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġm Map Ġinitialization ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Map : ĠGoogle Map ĊĠĠĠ Ġ// Ġlocation Ġvariables ĊĠĠĠ Ġprivate Ġval ĠLOC ATION _ PERMISSION _ REQUEST _ CODE Ġ= Ġ 1 Ġ// Ġrequest Ġcode Ġ 1 : ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġf used Location Client : ĠF used Location Provider Client ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlast Location : ĠLocation ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlocation Callback : ĠLocation Callback ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlocation Request : ĠLocation Request ĊĠĠĠ Ġprivate Ġvar Ġlocation Update State Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Events : ĠList < Camp us Event > ĊĊĠĠĠ Ġvar Ġm Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġvar Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOC ATION _ PERMISSION _ REQUEST _ CODE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ CHECK _ SETTINGS Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Building (): ĠBuilding Data Class ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġ" Public Profile " Ġcollection Ġreference ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa he u _ building Doc Ref Ġ= Ġdb . collection (" Maps ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document (" Do Y 3 4 y 1 8 i X 4 J DN x 6 b 5 OK ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" build ings ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document (" Y Mj 9 9 j T FT y F bh wh 7 Mk dw ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa he u _ building Doc Ref Ġ= Ġdb . collection (" test ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document (" me ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠTasks . await ( a he u _ building Doc Ref . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Check Ġif Ġdata Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Cast Ġthe Ġgiven ĠDocument Snapshot Ġto Ġour ĠPO JO Ġclass ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa he u Building Ġ= Ġdocument . toObject ( Building Data Class :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa he u Building ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Task Ġsuccessful ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Manage Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Error ", Ġ" CAN ĠNOT ĠF IND ĠA HE C ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Error ", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" Error Ġgetting Ġdata !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( application Context , Ġtext , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠActivity Ġcycle Ġ- ĠOn Create ĠMethod Ġloads Ġwhen ĠActivity Ġis Ġready ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġrestore ĠsavedInstanceState ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġif Ġuser Ġis Ġnot Ġauthenticated Ġredirect Ġto ĠLogin ĠActivity , Ġelse Ġload ĠMain ĠActivity Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( m Auth . currentUser Ġ== Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠLogin :: class . java ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) Ċ //// ĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġnav _ view . set Navigation ItemSelected Listener ( this ) ĊĠĠĠĠĠĠĠ Ġon Navigation ItemSelected ( Ġnav _ view . menu . getItem ( 1 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠO M ĊĠĠĠĠĠĠĠ Ġvar Ġlocations Ġ= ĠCamp us Locations () ĊĠĠĠĠĠĠĠ Ġvar Ġsc raper Ġ= ĠCalendar Sc rapper () ĊĠĠĠĠĠĠĠ Ġm Events Ġ= Ġsc raper . get Events ( read Raw ( R . raw . ms u _ event ), Ġlocations ) ĊĠĠĠĠĠĠĠ Ġ// Ġ~ ĠO M ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠObtain Ġthe ĠSupport Map Fragment Ġand Ġget Ġnotified Ġwhen Ġthe Ġmap Ġis Ġready Ġto Ġbe Ġused . ĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . map ) Ġas ? ĠSupport Map Fragment ĊĠĠĠĠĠĠĠ Ġmap Fragment ?. getMap Async ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠEnable Ġlocation Ġservices ĊĠĠĠĠĠĠĠ Ġf used Location Client Ġ= ĠLocation Services . getF used Location Provider Client ( this ) ĊĠĠĠĠĠĠĠ Ġlocation Callback Ġ= Ġobject Ġ: ĠLocation Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Result ( p 0 : ĠLocation Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Location Result ( p 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Location Ġ= Ġp 0 . last Location ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent LatLng Ġ= ĠLat Lng ( last Location . latitude , Ġlast Location . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDO ĠNOT ĠZ O OM ĠINTO ĠYOUR ĠLOC ATION Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Map . animate Camera ( Camera Update Factory . new LatLng Zoom ( current LatLng , Ġ 1 2 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcreate Location Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAndroid Ġback Ġbutton Ġaction ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer _ layout . is Drawer Open ( Gravity Compat . START )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer _ layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠSide ĠNav ĠBar Ġactions ĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġnavigation Ġview Ġitem Ġclicks Ġhere . ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . main _ Drawer Nav _ Map Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmaps Fragment Ġ= ĠBl ank Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . fragment , Ġmaps Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( support FragmentManager . find Fragment ById ( R . id . map )== null ) Log . d (" MR B ", Ġ" No ĠMap ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠLog . d (" MR B ", Ġ" Found Ġmap ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . main _ Drawer Nav _ Profile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ main , ĠProfile ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( android . R . anim ator . fade _ in , Ġandroid . R . anim ator . fade _ out ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( Profile ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . main _ Drawer Nav _ Settings Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . content _ main , ĠSettings ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdrawer _ layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġcode Ġto Ġget Ġcurrent Ġlocation ĊĠĠĠ Ġprivate Ġfun ĠsetUp Map () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( android . Manifest . permission . ACCESS _ F INE _ LOCATION ), ĠLOC ATION _ PERMISSION _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Map . is My Location Enabled Ġ= Ġtrue ; ĊĠĠĠĠĠĠĠ Ġf used Location Client . last Location . add On Success Listener ( this ) Ġ{ Ġlocation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGot Ġlast Ġknown Ġlocation . ĠIn Ġsome Ġrare Ġsituations Ġthis Ġcan Ġbe Ġnull . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Location Ġ= Ġlocation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent LatLng Ġ= ĠLat Lng ( location . latitude , Ġlocation . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Map . animate Camera ( Camera Update Factory . new LatLng Zoom ( current LatLng , Ġ 1 2 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Location Updates () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( android . Manifest . permission . ACCESS _ F INE _ LOCATION ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOC ATION _ PERMISSION _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// 2 ĊĠĠĠĠĠĠĠ Ġf used Location Client . request Location Updates ( location Request , Ġlocation Callback , Ġnull Ġ/* ĠL ooper Ġ*/) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Location Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ĊĠĠĠĠĠĠĠ Ġlocation Request Ġ= ĠLocation Request () ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ĊĠĠĠĠĠĠĠ Ġlocation Request . interval Ġ= Ġ 1 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠĠĠĠ Ġlocation Request . fast est Interval Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠ Ġlocation Request . priority Ġ= ĠLocation Request . PRIORITY _ HIGH _ AC CUR ACY ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠLocation Settings Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Location Request ( location Request ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠLocation Services . get Settings Client ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġclient . check Location Settings ( builder . build ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 5 ĊĠĠĠĠĠĠĠ Ġtask . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Update State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Location Updates () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtask . add On Failure Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġis ĠRes olvable ApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLocation Ġsettings Ġare Ġnot Ġsatisfied , Ġbut Ġthis Ġcan Ġbe Ġfixed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġby Ġshowing Ġthe Ġuser Ġa Ġdialog . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġdialog Ġby Ġcalling Ġstart Resolution For Result (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġcheck Ġthe Ġresult Ġin Ġon Activity Result (). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . start Resolution For Result ( this @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . REQUEST _ CHECK _ SETTINGS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( send Ex : ĠIntent Sender . Send Intent Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore Ġthe Ġerror . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠMainActivity . REQUEST _ CHECK _ SETTINGS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Update State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Location Updates () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġf used Location Client . remove Location Updates ( location Callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ(! location Update State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Location Updates () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Map Ready ( google Map : ĠGoogle Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Map Ġ= Ġgoogle Map ĊĠĠĠĠĠĠĠ Ġval Ġa he u Data Ġ= Ġget Building () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġa he u Ġ= ĠPolygon Options () ĊĠĠĠĠĠĠĠ Ġa he u . fill Color ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġa he u . click able ( true ) ĊĠĠĠĠĠĠĠ Ġif Ġ( a he u Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa he u Data . markers . forEach Indexed { Ġindex : ĠInt , Ġgeo Point : ĠGeo Point Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa he u . add ( LatLng ( geo Point . latitude , Ġgeo Point . longitude )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Map . add Marker ( Marker Options (). position ( LatLng ( geo Point . latitude , Ġgeo Point . longitude ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġa he u PL Ġ= Ġgoogle Map !!. add Polygon ( a he u ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġa he u . add ( LatLng ( a he u Data . markers [ 0 ]. latitude , Ġa he u Data . markers [ 0 ]. longitude )) Ċ // ĠĠĠĠĠĠĠ Ġa he u . add ( LatLng ( 3 9 . 7 4 3 9 2 2 , Ġ- 1 0 5 . 0 0 6 9 1 9 )) Ċ // ĠĠĠĠĠĠĠ Ġa he u . add ( LatLng ( 3 9 . 7 4 4 2 8 9 , Ġ- 1 0 5 . 0 0 5 9 7 2 )) Ċ // ĠĠĠĠĠĠĠ Ġa he u . add ( LatLng ( 3 9 . 7 4 3 4 3 4 , Ġ- 1 0 5 . 0 0 5 3 3 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġt iv oli Ġ= ĠPolygon Options () ĊĠĠĠĠĠĠĠ Ġt iv oli . fill Color ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġt iv oli . click able ( true ) ĊĠĠĠĠĠĠĠ Ġt iv oli . add ( LatLng ( 3 9 . 7 4 4 5 3 7 7 4 , Ġ- 1 0 5 . 0 0 5 9 5 1 0 6 )) ĊĠĠĠĠĠĠĠ Ġt iv oli . add ( LatLng ( 3 9 . 7 4 5 4 8 6 4 2 , Ġ- 1 0 5 . 0 0 6 6 7 5 2 6 )) ĊĠĠĠĠĠĠĠ Ġt iv oli . add ( LatLng ( 3 9 . 7 4 5 9 6 0 7 6 , Ġ- 1 0 5 . 0 0 5 6 9 8 9 4 )) ĊĠĠĠĠĠĠĠ Ġt iv oli . add ( LatLng ( 3 9 . 7 4 4 9 2 9 5 9 , Ġ- 1 0 5 . 0 0 4 9 3 1 8 2 )) ĊĠĠĠĠĠĠĠ Ġvar Ġt iv oli PL Ġ= Ġgoogle Map !!. add Polygon ( t iv oli ) ĊĊĠĠĠĠĠĠĠ Ġval Ġm sub Ġ= ĠPolygon Options () ĊĠĠĠĠĠĠĠ Ġm sub . fill Color ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġm sub . click able ( true ) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 3 5 0 2 9 4 , Ġ- 1 0 5 . 0 0 5 0 4 3 5 1 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 3 7 3 3 9 3 , Ġ- 1 0 5 . 0 0 5 2 2 3 2 2 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 3 7 7 9 3 , Ġ- 1 0 5 . 0 0 5 1 2 3 9 8 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 0 8 0 4 1 , Ġ- 1 0 5 . 0 0 5 3 7 8 7 9 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 0 7 2 3 , Ġ- 1 0 5 . 0 0 5 4 2 9 0 2 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 0 9 7 5 6 , Ġ- 1 0 5 . 0 0 5 4 4 9 8 1 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 1 7 4 9 , Ġ- 1 0 5 . 0 0 5 2 9 3 5 7 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 3 8 2 6 9 , Ġ- 1 0 5 . 0 0 5 4 5 8 6 8 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 5 9 1 , Ġ- 1 0 5 . 0 0 4 9 9 5 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 4 5 1 8 9 , Ġ- 1 0 5 . 0 0 4 8 7 5 0 9 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 4 0 0 1 1 , Ġ- 1 0 5 . 0 0 4 9 6 1 0 3 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 3 4 8 5 5 , Ġ- 1 0 5 . 0 0 4 9 1 9 4 6 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 4 2 4 3 4 , Ġ- 1 0 5 . 0 0 4 7 4 9 8 1 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 4 1 2 6 1 2 , Ġ- 1 0 5 . 0 0 4 5 1 8 6 1 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 3 8 7 5 8 2 , Ġ- 1 0 5 . 0 0 5 0 5 0 8 1 )) ĊĠĠĠĠĠĠĠ Ġm sub . add ( LatLng ( 3 9 . 7 4 3 5 9 7 7 9 , Ġ- 1 0 5 . 0 0 4 8 3 8 8 1 )) ĊĠĠĠĠĠĠĠ Ġvar Ġm sub PL Ġ= Ġgoogle Map !!. add Polygon ( ms ub ) ĊĊĠĠĠĠĠĠĠ Ġval Ġa ero Ġ= ĠPolygon Options () ĊĠĠĠĠĠĠĠ Ġa ero . fill Color ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġa ero . click able ( true ) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 7 4 8 , Ġ- 1 0 5 . 0 0 8 9 3 6 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 7 8 1 , Ġ- 1 0 5 . 0 0 8 9 8 9 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 7 4 8 , Ġ- 1 0 5 . 0 0 9 0 3 2 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 8 6 3 , Ġ- 1 0 5 . 0 0 9 1 2 3 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 8 7 6 , Ġ- 1 0 5 . 0 0 9 1 0 2 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 9 4 6 , Ġ- 1 0 5 . 0 0 9 1 8 2 )) Ġ// ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 9 7 1 , Ġ- 1 0 5 . 0 0 9 1 3 5 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 4 9 9 1 , Ġ- 1 0 5 . 0 0 9 1 7 2 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 5 4 2 8 , Ġ- 1 0 5 . 0 0 8 5 6 1 )) Ġ// ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 5 3 6 2 , Ġ- 1 0 5 . 0 0 8 4 7 0 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 5 3 5 4 , Ġ- 1 0 5 . 0 0 8 4 8 6 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 5 1 5 2 , Ġ- 1 0 5 . 0 0 8 2 5 0 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 5 0 9 4 , Ġ- 1 0 5 . 0 0 8 3 2 0 )) ĊĠĠĠĠĠĠĠ Ġa ero . add ( LatLng ( 3 9 . 7 4 5 1 4 4 , Ġ- 1 0 5 . 0 0 8 3 7 4 )) ĊĠĠĠĠĠĠĠ Ġvar Ġa ero PL Ġ= Ġgoogle Map !!. add Polygon ( a ero ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa Ġmarker Ġin ĠSy dn ey Ġand Ġmove Ġthe Ġcamera ĊĠĠĠĠĠĠĠ Ġval Ġms u Ġ= ĠLat Lng ( 3 9 . 7 4 3 0 6 4 , Ġ- 1 0 5 . 0 0 6 2 1 9 ) ĊĠĠĠĠĠĠĠ Ġm Map . add Marker ( Marker Options (). position ( ms u ). title (" Marker Ġin ĠM SU ĠDen ver ")) ĊĠĠĠĠĠĠĠ Ġval Ġzoom Level Ġ= Ġ 1 6 . 0 f ĊĠĠĠĠĠĠĠ Ġm Map . move Camera ( Camera Update Factory . new LatLng Zoom ( ms u , Ġzoom Level )) ĊĊĠĠĠĠĠĠĠ Ġfor ( event Ġin Ġm Events ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġe LatLng Ġ= Ġevent . get LatLng () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( e LatLng Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrandom List Ġ= Ġ(- 2 .. 2 ). sh uffled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx Offset Ġ= Ġrandom List . first () Ġ/ Ġ 1 0 0 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy Offset Ġ= Ġrandom List . last () Ġ/ Ġ 1 0 0 0 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmarker Ġ= Ġm Map . add Marker ( Marker Options (). position ( LatLng ( e LatLng . latitude Ġ+ Ġx Offset , Ġe LatLng . longitude Ġ+ Ġy Offset )). title ( event . getTitle ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . tag Ġ= Ġevent . getEvent ID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Map . setOn Info Window ClickListener Ġ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠsetUp Map () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen URL ( url Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbrowser Intent Ġ= ĠIntent ( Intent . ACTION _ VIEW , ĠUri . parse (" https :// ms ud en ver . edu / events /? tr um ba Embed = view % 3 De vent % 2 6 event id % 3 D $ url ")) ĊĠĠĠĠĠĠĠ ĠstartActivity ( browser Intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠContext . read Raw (@ Raw Res Ġresource Id : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresources . open Raw Resource ( resourceId ). buffered Reader ( Charsets . UTF _ 8 ). use Ġ{ Ġit . read Text () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlisten Messages () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . collection (" Maps ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Snapshot Listener Ġ{ Ġdocument Snapshot , Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Manage Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( document Snapshot Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Manage Ġour Ġdocument Snapshot ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Attach Fragment ( fragment : ĠFragment ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach Fragment ( fragment ) ĊĊĠĠĠ Ġ} Ċ } Ċ