package Ġcom . l ud os city . find my b ikes . ui . map Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . Map Fragment Ċ import Ġcom . google . android . gms . maps . On Map Ready Callback Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . l ud os city . find my b ikes . R Ċ import Ġcom . l ud os city . find my b ikes . ui . main . Find My B ikes Activity ViewModel Ċ import Ġcom . l ud os city . find my b ikes . utils . Injector Utils Ċ import Ġcom . l ud os city . find my b ikes . utils . Utils Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠF 8 Full Ġon Ġ 2 0 1 9 - 0 3 - 0 9 . ĠThis Ġfile Ġis Ġpart Ġof Ġ# find my b ikes Ċ Ġ* ĠFragment Ġclass Ġto Ġdisplay Ġa Ġmap Ġwith Ġcolored Ġoverlay s Ġscaling Ġwith Ġzoom Ġlevel . Ċ Ġ* ĠAlso Ġcar ries Ġinvisible Ġmap Ġmarker Ġthat Ġcan Ġbe Ġt apped . Ċ Ġ*/ Ċ class ĠStation Map Fragment Ġ: ĠFragment (), ĠOn Map Ready Callback , ĠGoogle Map . On Marker ClickListener , ĊĠĠĠĠĠĠĠ Ġ/* Google Map . On Camera ChangeListener , */ ĊĠĠĠĠĠĠĠ ĠGoogle Map . On Info Window ClickListener Ġ{ ĊĊĠĠĠ Ġ// models . ĠTODO : Retrieve Ġat Ġconstruction Ġtime Ġ? ĊĠĠĠ Ġ// TODO : Ġanswer Ġto Ġquestion Ġ: Ġyes , Ġlike Ġtable Ġfragment Ġgets Ġavailability Ġdata Ġsource Ġthrough Ġfind my b ikes Ġrepo ĊĠĠĠ Ġ// private Ġval Ġfavorite List ViewModel : ĠF avorite Sheet List ViewModel ĊĊĠĠĠ Ġprivate Ġvar Ġm Initial Camera Setup Done : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġm Google Map : ĠGoogle Map ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Anim Callback : ĠCustom C ancellable Callback ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġgfx Data : ĠList < Station Map G fx > Ġ= Ġempty List () ĊĊĠĠĠ Ġprivate Ġvar Ġm Marker Pick ed Favorite : ĠMarker ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Attribut ions Text : ĠTextView ? Ġ= Ġnull ĊĊĠĠĠ Ġ// private Ġval ĠM ONT REAL _ LAT L NG Ġ= ĠLat Lng ( 4 5 . 5 0 8 7 , Ġ- 7 3 . 5 5 4 ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpin A Icon Bitmap Descriptor : ĠBitmap Descriptor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpin B Icon Bitmap Descriptor : ĠBitmap Descriptor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpin Search Icon Bitmap Descriptor : ĠBitmap Descriptor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpin Favorite Icon Bitmap Descriptor : ĠBitmap Descriptor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġno Pin Favorite Icon Bitmap Descriptor : ĠBitmap Descriptor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpin AM ark er : ĠMarker ĊĠĠĠ Ġprivate Ġvar Ġpin B Marker : ĠMarker ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġfinal Destination Marker : ĠMarker ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġmarker AL at Lng : ĠLat Lng ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmarker B Visible LatLng : ĠLat Lng ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġthis Ġseems Ġrelated Ġto Ġon Save InstanceState , Ġsee Ġif Ġrelevant ĊĠĠĠ Ġ/* val Ġcamera Position : ĠCamera Position ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġto Return : ĠCamera Position ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Map Ready ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Return Ġ= Ġm Google Map !!. camera Position ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġto Return ĊĠĠĠĠĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠCustom C ancellable Callback Ġ: ĠGoogle Map . Cancel able Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfragment Model : ĠMap Fragment ViewModel ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Model Factory Ġ= ĠInject or Utils . provide MainActivity ViewModel Factory ( activity !!. application ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfind My B ikes Activity Model Ġ= ĠViewModel Providers . of ( activity !! , Ġactivity Model Factory ). get ( Find My B ikes Activity ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Ġpass Ġpre built Ġfactories Ġto Ġfragment Ġ( like Ġtable Ġfragment Ġ? ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Factory Ġ= ĠInject or Utils . provide Map Fragment ViewModel Factory ( activity !!. application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . has Location Permission , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Looking For Bi ke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Data OutOf Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . user Location , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Place , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Favorite ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Model Ġ= ĠViewModel Providers . of ( this @ Station Map Fragment , Ġmodel Factory ). get ( Map Fragment ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Model . show Map Items () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Anim Callback Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Model . show Map Items () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Anim Callback Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġval Ġinfl ated View Ġ= Ġinflater . inflate ( R . layout . fragment _ station _ map , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Google Map Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity !!. fragment Manager . find Fragment ById ( R . id . map Near by ) Ġas ĠMap Fragment ). getMap Async ( this ) ĊĊĠĠĠĠĠĠĠ Ġm Attribut ions Text Ġ= Ġinfl ated View . findViewById < View >( R . id . attribut ions _ text ) Ġas ĠTextView ĊĊĠĠĠĠĠĠĠ Ġpin A Icon Bitmap Descriptor Ġ= ĠUtils . get Bitmap Descriptor ( context !! , ĠR . drawable . ic _ pin _ a _ 3 6 dp _ black ) ĊĠĠĠĠĠĠĠ Ġpin B Icon Bitmap Descriptor Ġ= ĠUtils . get Bitmap Descriptor ( context !! , ĠR . drawable . ic _ pin _ b _ 3 6 dp _ black ) ĊĠĠĠĠĠĠĠ Ġpin Search Icon Bitmap Descriptor Ġ= ĠUtils . get Bitmap Descriptor ( context !! , ĠR . drawable . ic _ pin _ search _ 2 4 dp _ black ) ĊĠĠĠĠĠĠĠ Ġpin Favorite Icon Bitmap Descriptor Ġ= ĠUtils . get Bitmap Descriptor ( context !! , ĠR . drawable . ic _ pin _ favorite _ 2 4 dp _ black ) ĊĠĠĠĠĠĠĠ Ġno Pin Favorite Icon Bitmap Descriptor Ġ= ĠUtils . get Bitmap Descriptor ( context !! , ĠR . drawable . ic _ nop in _ favorite _ 2 4 dp _ white ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Model Factory Ġ= ĠInject or Utils . provide MainActivity ViewModel Factory ( activity !!. application ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfind My B ikes Activity Model Ġ= ĠViewModel Providers . of ( activity !! , Ġactivity Model Factory ). get ( Find My B ikes Activity ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// TODO : Ġpass Ġpre built Ġfactories Ġto Ġfragment Ġ( like Ġtable Ġfragment Ġ? ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Factory Ġ= ĠInject or Utils . provide Map Fragment ViewModel Factory ( activity !!. application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . has Location Permission , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Looking For Bi ke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Data OutOf Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . user Location , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Place , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Favorite ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Model Ġ= ĠViewModel Providers . of ( this , Ġmodel Factory ). get ( Map Fragment ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . last Clicked While Looking For Bi ke . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . set Station A ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġfragment Model . last Clicked While Looking For Dock . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . set Station B ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinfl ated View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġactivity !!. support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . map Near by ) ĊĠĠĠĠĠĠĠ Ġif Ġ( f Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. support FragmentManager . beginTransaction (). remove ( f ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// out State . put Boolean (" pin _ pick ed _ place _ visibility ", Ġm Marker Pick ed Place Ġ!= Ġnull Ġ&& Ġm Marker Pick ed Place !!. isVisible ) ĊĠĠĠĠĠĠĠ Ġ// out State . put Parcelable (" pin _ pick ed _ place _ lat lng ", Ġif Ġ( m Marker Pick ed Place Ġ!= Ġnull ) Ġm Marker Pick ed Place !!. position Ġelse ĠM ONT REAL _ LAT L NG ) ĊĠĠĠĠĠĠĠ Ġ// out State . putString (" pick ed _ place _ name ", Ġif Ġ( m Marker Pick ed Place Ġ!= Ġnull ) Ġm Marker Pick ed Place !!. title Ġelse Ġ"") ĊĊĠĠĠĠĠĠĠ Ġ// out State . put Boolean (" pin _ pick ed _ favorite _ visibility ", Ġm Marker Pick ed Favorite Ġ!= Ġnull Ġ&& Ġm Marker Pick ed Favorite !!. isVisible ) ĊĠĠĠĠĠĠĠ Ġ// out State . put Parcelable (" pin _ pick ed _ favorite _ lat lng ", Ġif Ġ( m Marker Pick ed Favorite Ġ!= Ġnull ) Ġm Marker Pick ed Favorite !!. position Ġelse ĠM ONT REAL _ LAT L NG ) ĊĠĠĠĠĠĠĠ Ġ// out State . putString (" pick ed _ favorite _ name ", Ġif Ġ( m Marker Pick ed Favorite Ġ!= Ġnull ) Ġm Marker Pick ed Favorite !!. title Ġelse Ġ"") ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// This Ġis Ġfor Ġdebug ĊĠĠĠ Ġ/*@ Override ĊĠĠĠ Ġpublic Ġvoid Ġon Camera Change ( Camera Position Ġcamera Position ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Log . d (" Camera Zoom Level ", ĠFloat . toString ( camera Position . zoom )); ĊĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġoverride Ġfun Ġon Info Window Click ( marker : ĠMarker ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠUri . Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . append Path ( INFO WINDOW _ CLICK _ PATH ) ĊĊĠĠĠĠĠĠĠ Ġmarker . hide Info Window () ĊĊĠĠĠĠĠĠĠ Ġbuilder . append QueryParameter ( INFO WINDOW _ CLICK _ MARKER _ POS _ LAT _ PARAM , Ġmarker . position . latitude . toString ()) ĊĠĠĠĠĠĠĠ Ġbuilder . append QueryParameter ( INFO WINDOW _ CLICK _ MARKER _ POS _ L NG _ PARAM , Ġmarker . position . longitude . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Map Ready ( google Map : ĠGoogle Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Initial Camera Setup Done Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Google Map Ġ= Ġgoogle Map ĊĠĠĠĠĠĠĠ Ġenable My Location Checking Permission () ĊĠĠĠĠĠĠĠ Ġm Google Map !!. setOn Marker ClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġm Google Map !!. setOn Info Window ClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġ// m Google Map . setOn Camera ChangeListener ( this ); ĊĠĠĠĠĠĠĠ Ġ// m Google Map . setOn Map ClickListener ( this ); ĊĠĠĠĠĠĠĠ Ġ// h Ã© h Ã© h Ã© , Ġfeel Ġthe Ġpower Ġof Ġdesign Ġ!! ĊĠĠĠĠĠĠĠ Ġ// TODO : Ġre think Ġgest ue . ĠAlso Ġgesture Ġavailability Ġobserved Ġfrom Ġfragment Ġor Ġactivity Ġmodel ĊĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . is Zoom Gest ures Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . is Rotate Gest ures Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . isIn door Level Picker Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . is T ilt Gest ures Enabled Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Model Factory Ġ= ĠInject or Utils . provide MainActivity ViewModel Factory ( activity !!. application ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfind My B ikes Activity Model Ġ= ĠViewModel Providers . of ( activity !! , Ġactivity Model Factory ). get ( Find My B ikes Activity ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// TODO : Ġpass Ġpre built Ġfactories Ġto Ġfragment Ġ( like Ġtable Ġfragment Ġ? ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Factory Ġ= ĠInject or Utils . provide Map Fragment ViewModel Factory ( activity !!. application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . has Location Permission , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Looking For Bi ke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Data OutOf Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . user Location , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Place , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Favorite ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Model Ġ= ĠViewModel Providers . of ( this , Ġmodel Factory ). get ( Map Fragment ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . has Location Permission . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. is My Location Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . is My Location Button Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. is My Location Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . map Padding Left Px . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. set Padding ( it Ġ?: Ġ 0 , Ġ 0 , Ġfragment Model . map Padding Right Px . value Ġ?: Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . map Padding Right Px . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. set Padding ( fragment Model . map Padding Left Px . value Ġ?: Ġ 0 , Ġ 0 , Ġit Ġ?: Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . show Map Items . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG , Ġ" map Ġitem Ġnew Ġvisibility Ġ: Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgfx Data . forEach Ġ{ Ġmap G fx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap G fx . show ( m Google Map !!. camera Position . zoom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgfx Data . forEach Ġ{ Ġmap G fx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap G fx . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . is Data OutOf Date . observe ( this , ĠObserver Ġ{ Ġdata Is OutOf Date Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgfx Data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . update Marker ( data Is OutOf Date Ġ== Ġtrue , Ġfragment Model . is Looking For Bi ke . value Ġ== Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . is Looking For Bi ke . observe ( this , ĠObserver Ġ{ Ġis Looking For Bi ke Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgfx Data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . update Marker ( fragment Model . is Data OutOf Date . value Ġ== Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Looking For Bi ke Ġ== Ġtrue , Ġcontext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpin AM ark er Ġ= Ġm Google Map !!. add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLat Lng ( find My B ikes Activity Model . get Station A (). value ?. latitude Ġ?: Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (). value ?. longitude Ġ?: Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( pin A Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. visible ( find My B ikes Activity Model . get Station A (). value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( find My B ikes Activity Model . get Station A (). value ?. location Hash )) ĊĊĠĠĠĠĠĠĠ Ġpin B Marker Ġ= Ġm Google Map !!. add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLat Lng ( find My B ikes Activity Model . get Station B (). value ?. latitude Ġ?: Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (). value ?. longitude Ġ?: Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( pin B Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. visible ( find My B ikes Activity Model . get Station B (). value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( find My B ikes Activity Model . get Station B (). value ?. location Hash )) ĊĊĊĠĠĠĠĠĠĠ Ġfinal Destination Marker Ġ= Ġm Google Map !!. add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Model . final Destination LatLng . value Ġ?: ĠLat Lng ( 0 . 0 , Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( pin Favorite Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. visible ( fragment Model . final Destination LatLng . value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ("")) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . map G fx LiveData . observe ( this , ĠObserver Ġ{ Ġnew G fx Data Ġ-> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Ġshould Ġlocal Ġgfx Data Ġlist Ġbe Ġcleared Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgfx Data Ġ= Ġnew G fx Data Ġ?: Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpin AM ark er Ġ= Ġm Google Map !!. add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLat Lng ( find My B ikes Activity Model . get Station A (). value ?. latitude Ġ?: Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (). value ?. longitude Ġ?: Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( pin A Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. visible ( find My B ikes Activity Model . get Station A (). value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( find My B ikes Activity Model . get Station A (). value ?. location Hash )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpin B Marker Ġ= Ġm Google Map !!. add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLat Lng ( find My B ikes Activity Model . get Station B (). value ?. latitude Ġ?: Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (). value ?. longitude Ġ?: Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( pin B Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. visible ( find My B ikes Activity Model . get Station B (). value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( find My B ikes Activity Model . get Station B (). value ?. location Hash )) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker Ġ= Ġm Google Map !!. add Marker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker Options (). position ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Model . final Destination LatLng . value Ġ?: ĠLat Lng ( 0 . 0 , Ġ 0 . 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( pin Favorite Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. visible ( fragment Model . final Destination LatLng . value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgfx Data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . addTo Map ( m Google Map !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Markers Ġredraw ned , Ġsize Ġ:" Ġ+ Ġgfx Data . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . marker Red raw End () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Anim Callback Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Model . show Map Items () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . camera Animation Target . observe ( this , ĠObserver Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG , Ġ" M app Padding Left : Ġ${ fragment Model . map Padding Left Px . value }, ĠMap Padding Right : Ġ${ fragment Model . map Padding Right Px . value }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . d ( TAG , Ġ" observed Ġnew Ġcamera Ġtarget ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Anim Callback Ġ= ĠCustom C ancellable Callback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. animate Camera ( it , Ġresources . getInteger ( R . integer . camera _ animation _ duration ), Ġm Anim Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . final Destination LatLng . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. position Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin B Marker ?. position ?. latitude Ġ== Ġit . latitude Ġ&& Ġpin B Marker ?. position ?. longitude Ġ== Ġit . longitude ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. hide Info Window () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. setIcon ( no Pin Favorite Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . is Final Destination Favorite . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. setIcon ( pin Favorite Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. setIcon ( pin Search Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . final Destination Title . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġtitle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. title Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. show Info Window () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . is Scroll Gest ures Enabled . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . is Scroll Gest ures Enabled Ġ= Ġit Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Ġfind Ġa Ġway Ġto Ġanimate Ġthat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin AM ark er . position Ġ= ĠLat Lng ( it . latitude , Ġit . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin AM ark er . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin AM ark er . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin B Marker ?. position Ġ= ĠLat Lng ( it . latitude , Ġit . longitude ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pin B Marker ?. position ?. latitude Ġ== Ġfinal Destination Marker ?. position ?. latitude Ġ&& Ġpin B Marker ?. position ?. longitude Ġ== Ġfinal Destination Marker ?. position ?. longitude ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. hide Info Window () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. setIcon ( no Pin Favorite Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. show Info Window () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : Ġfragment Ġshould Ġbe Ġun aware Ġof Ġfavorite Ġconcept , ĠBitmap Descriptors Ġto Ġuse Ġshould ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// be Ġprepared Ġby Ġfragment Ġmodel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fragment Model . is Final Destination Favorite . value Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. setIcon ( pin Favorite Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinal Destination Marker ?. setIcon ( pin Search Icon Bitmap Descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin B Marker ?. isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpin B Marker ?. isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Marker Click ( marker : ĠMarker ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( marker . title Ġ== Ġfinal Destination Marker ?. title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . show Info Window () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Model Factory Ġ= ĠInject or Utils . provide MainActivity ViewModel Factory ( activity !!. application ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfind My B ikes Activity Model Ġ= ĠViewModel Providers . of ( activity !! , Ġactivity Model Factory ). get ( Find My B ikes Activity ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// TODO : Ġpass Ġpre built Ġfactories Ġto Ġfragment Ġ( like Ġtable Ġfragment Ġ? ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Factory Ġ= ĠInject or Utils . provide Map Fragment ViewModel Factory ( activity !!. application , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . has Location Permission , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Looking For Bi ke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . is Data OutOf Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . user Location , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station A (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . get Station B (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Place , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind My B ikes Activity Model . final Destination Favorite ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Model Ġ= ĠViewModel Providers . of ( this , Ġmodel Factory ). get ( Map Fragment ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġfragment Model . set Last Clicked Station ById ( marker . title ) ĊĊĠĠĠĠĠĠĠ Ġ// So Ġthat Ġinfo Ġwindow Ġwill Ġnot Ġbe Ġshowed ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġrepl ug Ġlocation Ġpermission Ġrequest Ġ( splash Ġscreen Ġ? ) ĊĠĠĠ Ġfun Ġenable My Location Checking Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this . context !! , ĠManifest . permission . ACCESS _ F INE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĠActivity Compat . check Self Permission ( this . context !! , ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. is My Location Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Google Map !!. ui Settings . is My Location Button Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġin Ġmodel ĊĠĠĠ Ġfun Ġpicked Favorite Marker Info Window Show () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Marker Pick ed Favorite !!. show Info Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġin Ġmodel ĊĠĠĠ Ġfun Ġpicked Favorite Marker Info Window Hide () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Marker Pick ed Favorite !!. hide Info Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠStation Map Fragment :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġval ĠINFO WINDOW _ CLICK _ PATH Ġ= Ġ" inf ow indow _ click " ĊĊĠĠĠĠĠĠĠ Ġval ĠINFO WINDOW _ CLICK _ MARKER _ POS _ LAT _ PARAM Ġ= Ġ" inf ow indow _ click _ marker _ lat " ĊĠĠĠĠĠĠĠ Ġval ĠINFO WINDOW _ CLICK _ MARKER _ POS _ L NG _ PARAM Ġ= Ġ" inf ow indow _ click _ marker _ lng " ĊĠĠĠ Ġ} Ċ Ċ } Ċ