package Ġapp . art y om d . cool app . maps Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . Paint . FILTER _ BITMAP _ FLAG Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġapp . art y om d . cool app . On Fragment Interaction Listener Ċ import Ġapp . art y om d . cool app . R Ċ import Ġapp . art y om d . cool app . api . Rel ief Service Ċ import Ġapp . art y om d . cool app . db . DB Ċ import Ġapp . art y om d . cool app . db . Dis aster Metadata Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . Support Map Fragment Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġkotlinx . android . synt hetic . main . fragment _ maps .* ĊĊ Ċ class ĠMaps Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn Fragment Interaction Listener ? Ġ= Ġnull ĊĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgoogle Map : ĠGoogle Map ĊĠĠĠ Ġprivate Ġvar Ġdb : ĠDB ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdis asters : ĠMutable List < Dis aster Metadata > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ maps , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġdis asters Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġdb Ġ= ĠDB . instance ĊĠĠĠĠĠĠĠ Ġdb !!. add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( p 0 : ĠDatabase Error ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin Ġdata Snapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġdata . getValue ( Dis aster Metadata :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarker Ġ= ĠLat Lng ( metadata !!. latitude , Ġmetadata . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis asters . add ( metadata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= Ġget Marker ( metadata . tag !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . add Marker ( Marker Options (). position ( marker )). tag Ġ= Ġmetadata . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġscale Bitmap ( bitmap , Ġ 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . add Marker ( Marker Options (). position ( marker ). icon ( Bitmap Descriptor Factory . from Bitmap ( bitmap ))). tag Ġ= Ġmetadata . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġ( child FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . map ) Ġas ĠSupport Map Fragment ) ĊĠĠĠĠĠĠĠ Ġmap Fragment . getMap Async Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . is My Location Enabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRel ief Service . getData Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata !!. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarker Ġ= ĠLat Lng ( it . latitude , Ġit . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= Ġget Marker ( it . tag !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . add Marker ( Marker Options (). position ( marker )). tag Ġ= Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġscale Bitmap ( bitmap !! , Ġ 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . add Marker ( Marker Options (). position ( marker ). icon ( Bitmap Descriptor Factory . from Bitmap ( bitmap ))). tag Ġ= Ġit . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis asters . add ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . setOn Marker ClickListener ( Google Map . On Marker ClickListener Ġ{ Ġmarker Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dis aster Ġin Ġdis asters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( marker . tag !! Ġ== Ġdis aster . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠMarker Details Dialog ( context , Ġdis aster ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Marker ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Marker ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. open Camera () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Marker ( tags : ĠList < String >): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags . contains ( Dis aster Metadata . TAG _ FIRE ) Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . fire ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags . contains ( Dis aster Metadata . TAG _ CAR ) Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . car ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags . contains ( Dis aster Metadata . TAG _ TR ASH ) Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . trash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags . contains ( Dis aster Metadata . TAG _ NAT UR AL ) Ġ-> ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . natural ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscale Bitmap ( bitmap : ĠBitmap , Ġnew Width : ĠInt , Ġnew Height : ĠInt ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscaled Bitmap Ġ= ĠBitmap . create Bitmap ( new Width , Ġnew Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġscale X Ġ= Ġnew Width Ġ/ Ġbitmap . width . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġscale Y Ġ= Ġnew Height Ġ/ Ġbitmap . height . toFloat () ĊĠĠĠĠĠĠĠ Ġval Ġpivot X Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġval Ġpivot Y Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠ Ġval Ġscale Matrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠ Ġscale Matrix . set Scale ( scale X , Ġscale Y , Ġpivot X , Ġpivot Y ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( scaled Bitmap ) ĊĠĠĠĠĠĠĠ Ġcanvas . matrix Ġ= Ġscale Matrix ĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( bitmap , Ġ 0 f , Ġ 0 f , ĠPaint ( FILTER _ BITMAP _ FLAG )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġscaled Bitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠOn Fragment Interaction Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( context . toString () Ġ+ Ġ" Ġmust Ġimplement ĠOn Fragment Interaction Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġlistener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠMaps Fragment () ĊĠĠĠ Ġ} Ċ } Ċ