package Ġcom . demo . app . speed location . helper Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . demo . app . speed location . R Ċ import Ġcom . demo . app . speed location . util . View Utils Ċ import Ġcom . google . android . gms . maps . Camera Update Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . model .* ĊĊ Ċ const Ġval ĠMIN _ ZO OM _ LEVEL Ġ= Ġ 1 4 f Ċ const Ġval ĠRUN NING _ ZO OM _ LEVEL Ġ= Ġ 1 8 f Ċ val ĠDEFAULT _ LOCATION Ġ= ĠLat Lng ( 1 0 . 7 7 7 2 6 0 , Ġ 1 0 6 . 6 9 4 7 2 9 ) Ċ Ċ fun ĠGoogle Map ?. config Google Map ( just View : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġthis ?. ui Settings ?. is Comp ass Enabled Ġ= Ġ! just View ĊĠĠĠ Ġthis ?. ui Settings ?. is My Location Button Enabled Ġ= Ġfalse ĊĠĠĠ Ġthis ?. ui Settings ?. is Map Toolbar Enabled Ġ= Ġfalse ĊĠĠĠ Ġthis ?. ui Settings ?. isIn door Level Picker Enabled Ġ= Ġfalse ĊĠĠĠ Ġthis ?. ui Settings ?. is Rotate Gest ures Enabled Ġ= Ġ! just View ĊĠĠĠ Ġthis ?. ui Settings ?. is Scroll Gest ures Enabled Ġ= Ġ! just View ĊĠĠĠ Ġthis ?. ui Settings ?. is Scroll Gest ures Enabled During Rotate Or Zoom Ġ= Ġ! just View ĊĠĠĠ Ġthis ?. ui Settings ?. is Zoom Gest ures Enabled Ġ= Ġ! just View ĊĠĠĠ Ġthis ?. ui Settings ?. is Zoom Controls Enabled Ġ= Ġfalse ĊĠĠĠ Ġthis ?. ui Settings ?. is T ilt Gest ures Enabled Ġ= Ġ! just View ĊĠĠĠ Ġthis ?. set Min Zoom Preference ( MIN _ ZO OM _ LEVEL ) Ċ } Ċ Ċ fun ĠGoogle Map ?. moveTo Location ( ĊĠĠĠ Ġlocation : ĠLat Lng ?, ĊĠĠĠ Ġis Animate : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġduration : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġzoom : ĠFloat Ġ= ĠMIN _ ZO OM _ LEVEL Ċ ) Ġ{ ĊĠĠĠ Ġthis ?. run Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Update Ġ= ĠCamera Update Factory . new LatLng Zoom ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( zoom Ġ== Ġ 0 f ) Ġthis . camera Position . zoom Ġelse Ġzoom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Update ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . animate Camera ( camera Update , Ġduration , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġthis . animate Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthis . move Camera ( camera Update ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun ĠGoogle Map ?. add Marker With Bitmap Icon ( ĊĠĠĠ Ġlocation : ĠLat Lng , ĊĠĠĠ Ġicon : ĠBitmap Descriptor , ĊĠĠĠ Ġz Index : ĠFloat Ġ= Ġ 0 f , ĊĠĠĠ Ġcenter : ĠBoolean Ġ= Ġfalse Ċ ): ĠMarker ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmarker Option Ġ= ĠMarker Options () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. position ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. z Index ( z Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( icon ) ĊĠĠĠĠĠĠĠ Ġif Ġ( center ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Option Ġ= Ġmarker Option . anchor ( 0 . 5 f , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ?. add Marker ( marker Option ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ private Ġfun Ġmake Marker View ( ĊĠĠĠ Ġcontext : ĠContext ?, ĊĠĠĠ Ġmarker Layout : ĠInt Ċ ): ĠView Ġ{ ĊĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġreturn Ġinflater . inflate ( ĊĠĠĠĠĠĠĠ Ġmarker Layout , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠContext . make Marker Icon ( layout : ĠInt ): ĠBitmap Descriptor Ġ{ ĊĠĠĠ Ġval Ġview Marker Ġ= Ġmake Marker View ( this , Ġlayout ) ĊĠĠĠ Ġreturn ĠBitmap Descriptor Factory . from Bitmap ( get Bitmap From View ( view Marker )) Ċ } Ċ Ċ fun Ġget Bitmap From View ( view : ĠView ): ĠBitmap Ġ{ ĊĠĠĠ Ġview . measure ( View . Measure Spec . UNSPECIFIED , ĠView . Measure Spec . UNSPECIFIED ) ĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠ Ġview . meas ured Width , ĊĠĠĠĠĠĠĠ Ġview . meas ured Height , ĊĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠ Ġview . layout ( 0 , Ġ 0 , Ġview . width , Ġview . height ) ĊĠĠĠ Ġview . draw ( canvas ) ĊĠĠĠ Ġreturn Ġbitmap Ċ } ĊĊ Ċ fun ĠGoogle Map ?. bound Markers ( models : ĠList < LatLng >, Ġanimate : ĠBoolean Ġ= Ġtrue , Ġpadding : ĠInt Ġ= Ġ 1 0 ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcamera Update Ġ= Ġget Bound Camera ( models , Ġpadding ) ĊĠĠĠĠĠĠĠ Ġif Ġ( animate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ?. animate Camera ( camera Update ) ĊĠĠĠĠĠĠĠ Ġelse Ġthis ?. move Camera ( camera Update ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Bound Camera ( locations : ĠList < LatLng >, Ġpadding : ĠInt Ġ= Ġ 1 0 ): ĠCamera Update Ġ{ ĊĠĠĠ Ġreturn ĠCamera Update Factory . new LatLng Bounds ( get LatLng Bounds ( locations ), Ġpadding ) Ċ } Ċ Ċ fun Ġget LatLng Bounds ( locations : ĠList < LatLng >): ĠLat Lng Bounds Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠLat Lng Bounds . Builder () ĊĠĠĠ Ġlocations . map Ġ{ Ġbuilder . include ( it ) Ġ} ĊĠĠĠ Ġreturn Ġbuilder . build () Ċ } ĊĊ Ċ fun Ġcreate Polyline Option ( context : ĠContext , Ġpoints : ĠList < LatLng >): ĠPoly line Options Ġ{ ĊĠĠĠ Ġval Ġops Ġ= ĠPoly line Options () ĊĠĠĠ Ġops . ge odes ic ( true ). width ( View Utils . dp To Px ( 6 f ). toFloat ()) ĊĠĠĠĠĠĠĠ Ġ. color ( Context Compat . getColor ( context , ĠR . color . color Accent )) ĊĠĠĠ Ġfor Ġ( point Ġin Ġpoints ) Ġ{ ĊĠĠĠĠĠĠĠ Ġops . add ( point ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġops Ċ }