package Ġcom . projects . val er ian . sample map application Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ 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 . projects . val er ian . sample map application . model . Infrastructure Type Ċ import Ġcom . projects . val er ian . sample map application . view . Action Ċ import Ġcom . projects . val er ian . sample map application . view . Infrastructure Type Adapter Ċ import Ġcom . projects . val er ian . sample map application . view . View ActionListener Ċ import Ġkotlinx . android . synt hetic . main . activity _ suggestion .* Ċ Ċ class ĠAdd Suggestion Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġselected Items Ġ= Ġmutable Set Of < Infrastructure Type >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcoords : ĠLat Lng ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ suggestion ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlat : ĠDouble Ġ= Ġintent ?. extras ?. getDouble ( EXTRA _ LAT IT UDE ) !! ĊĠĠĠĠĠĠĠ Ġval Ġlon : ĠDouble Ġ= Ġintent ?. extras ?. getDouble ( EXTRA _ LONG IT UDE ) !! ĊĊĠĠĠĠĠĠĠ Ġcoords Ġ= ĠLat Lng ( lat , lon ) ĊĊĠĠĠĠĠĠĠ Ġlbl _ latitude . text Ġ= Ġ" Latitude : Ġ$ lat " ĊĠĠĠĠĠĠĠ Ġlbl _ longitude . text Ġ= Ġ" Longitude : Ġ$ lon " ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . content ) Ġas ĠSupport Map Fragment ĊĊĠĠĠĠĠĠĠ Ġmap Fragment . getMap Async Ġ{ Ġgoogle Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Marker ( Marker Options (). position ( coords )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Camera ( Camera Update Factory . new LatLng Zoom ( coords , Ġ 1 5 . 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup Button ( coords ) ĊĠĠĠĠĠĠĠ Ġsetup List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup List () Ġ{ ĊĠĠĠĠĠĠĠ Ġrv _ selection . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġrv _ selection . adapter Ġ= ĠInfrastructure Type Adapter ( object Ġ: ĠView ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Action ( action : ĠAction , Ġdata : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction . LONG _ PRESS Ġ-> Ġselected Items . add ( data Ġas ĠInfrastructure Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAction . CLICK Ġ-> Ġselected Items . remove ( data Ġas ĠInfrastructure Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Button ( coords : ĠLat Lng ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn _ next . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . selected Items . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( main , Ġ" Long - press Ġto Ġselect Ġan Ġimprovement Ġfrom Ġthe Ġlist Ġabove ", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Add Details Activity . create Intent ( this , Ġcoords . latitude , Ġcoords . longitude , Ġthis . selected Items . map { Ġit . name Ġ}. to Typed Array ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . slide _ in _ from _ right , ĠR . anim . slide _ out _ to _ left ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . selected Items . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ LAT IT UDE Ġ= Ġ" extra _ latitude " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEX TRA _ LONG IT UDE Ġ= Ġ" extra _ longitude " ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlon : ĠDouble ĊĠĠĠĠĠĠĠ Ġ): ĠIntent Ġ= ĠIntent ( context , ĠAdd Suggestion Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ LAT IT UDE , Ġlat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ LONG IT UDE , Ġlon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ SINGLE _ TOP Ġor ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }