package Ġcom . test . hy ro co pt ert est app . utils Ċ Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Typed Value Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Ċ import Ġcom . google . android . gms . maps . model . Bitmap Descriptor Factory Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . test . hy ro co pt ert est app . model . Input Model Ċ Ċ object ĠMarker Generator Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbm Size Ġ= ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 6 f , ĠDISPLAY _ METR ICS ). toInt () ĊĊĠĠĠ Ġprivate Ġval Ġbitmap Manual Ġ= ĠBitmap . create Bitmap ( bm Size , Ġbm Size , ĠBitmap . Config . ARGB _ 8 8 8 8 ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCanvas ( it ) ĊĠĠĠĠĠĠĠ Ġc . draw Circle ( bm Size / 2 f , Ġbm Size / 2 f , Ġbm Size / 2 f , ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . GREEN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbitmap Auto Ġ= ĠBitmap . create Bitmap ( bm Size , Ġbm Size , ĠBitmap . Config . ARGB _ 8 8 8 8 ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc 2 Ġ= ĠCanvas ( it ) ĊĠĠĠĠĠĠĠ Ġc 2 . draw Circle ( bm Size / 2 f , Ġbm Size / 2 f , Ġbm Size / 2 f , ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . MAG ENT A ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġdescriptor Manual Ġ= ĠBitmap Descriptor Factory . from Bitmap ( bitmap Manual ) ĊĠĠĠ Ġprivate Ġval Ġdescriptor Auto Ġ= ĠBitmap Descriptor Factory . from Bitmap ( bitmap Auto ) ĊĊĊĠĠĠ Ġfun Ġgenerate Marker ( data : ĠInput Model ): Marker Options { ĊĠĠĠĠĠĠĠ Ġreturn ĠMarker Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flat ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( if ( data . mode Ġ== ĠINPUT _ MODE _ MAN UAL ) Ġdescriptor Manual Ġelse Ġdescriptor Auto ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. position ( data . get LatLng ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. anchor ( 0 . 5 f , Ġ 0 . 5 f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpaint Be aring Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . GREEN ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL _ AND _ ST RO KE ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 3 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpaint Aut opilot Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . YELLOW ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL _ AND _ ST RO KE ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 3 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpaint Y aw Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠPaint . Style . FILL _ AND _ ST RO KE ĊĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġ 3 f ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Arrow Bitmap Descriptor ( data : ĠInput Model ): ĠBitmap Descriptor { ĊĠĠĠĠĠĠĠ Ġval Ġbm Dim Ġ= ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġ 6 0 f , ĠDISPLAY _ METR ICS ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġbm R Ġ= Ġbm Dim / 2 f ĊĠĠĠĠĠĠĠ Ġval Ġbm T Ġ= Ġbm R / 5 f ĊĠĠĠĠĠĠĠ Ġval Ġbm Ġ= ĠBitmap . create Bitmap ( bm Dim , Ġbm Dim , ĠBitmap . Config . ARGB _ 8 8 8 8 ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCanvas ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġget Arrow Path ( bm Dim . toFloat (), Ġbm R , bm Dim . toFloat ()- bm T , bm R - bm T / 2 f , bm R + bm T / 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . rotate ( data . be aring . toFloat ()- 9 0 f , Ġbm R , Ġbm R ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Line ( bm R , Ġbm R , Ġbm Dim . toFloat (), Ġbm R , Ġpaint Be aring ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Path ( path , Ġpaint Be aring ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . rotate (- ( data . be aring . toFloat ()- 9 0 f ) Ġ+ Ġ( data . aut opilot Dir . toFloat ()- 9 0 f ), Ġbm R , Ġbm R ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Line ( bm R , Ġbm R , Ġbm Dim . toFloat (), Ġbm R , Ġpaint Aut opilot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Path ( path , Ġpaint Aut opilot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . rotate (- ( data . aut opilot Dir . toFloat ()- 9 0 f )+( data . imu Y aw . toFloat ()- 9 0 f ), Ġbm R , Ġbm R ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Line ( bm R , Ġbm R , Ġbm Dim . toFloat (), Ġbm R , Ġpaint Y aw ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . draw Path ( path , Ġpaint Y aw ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . rotate (- ( data . imu Y aw . toFloat ()- 9 0 f ), Ġbm R , Ġbm R ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Descriptor Factory . from Bitmap ( bm ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Arrow Path ( x Top : ĠFloat , Ġy Top : ĠFloat , Ġx Left : ĠFloat , Ġy Left T : ĠFloat , Ġy Left B : ĠFloat ): Path { ĊĠĠĠĠĠĠĠ Ġreturn ĠPath (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove To ( x Top , Ġy Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( x Left , Ġy Left B ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( x Left , Ġy Left T ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline To ( x Top , Ġy Top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Arrow Marker ( data : ĠInput Model ): ĠMarker Options { ĊĠĠĠĠĠĠĠ Ġreturn ĠMarker Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flat ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. icon ( generate Arrow Bitmap Descriptor ( data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. position ( data . get LatLng ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. anchor ( 0 . 5 f , Ġ 0 . 5 f ) ĊĠĠĠ Ġ} Ċ }