package Ġcom . sys u . example . activity Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . li ang . example . map . bean . Deep Nav i Coordinator Ċ import Ġcom . li ang . example . map . bean . Deep Nav i Edge Ċ import Ġcom . li ang . example . map . bean . Deep Nav i Map Ċ import Ġcom . li ang . example . map . bean . Deep Nav i Point Ċ import Ġcom . li ang . example . map . bean . INVALID _ STR Ċ import Ġcom . li ang . example . map . map _ view . Line Edge Ċ import Ġcom . li ang . example . map . map _ view . Map Container Ċ import Ġcom . li ang . example . map . map _ view . Marker Ċ import Ġcom . li ang . example . map . net . Point Api . get Points Ċ import Ġcom . sys u . deep nav i . Deep Nav i Manager Ċ import Ġcom . sys u . example . Key Urls . GET _ POINTS Ċ import Ġcom . sys u . example . R Ċ import Ġcom . sys u . example . fragment . Add Edge Dialog Fragment Ċ import Ġcom . sys u . example . fragment . Add Point Dialog Fragment Ċ import Ġcom . sys u . example . fragment . Search Map Dialog Fragment Ċ import Ġcom . sys u . example . fragment . Upload Map Dialog Fragment Ċ import Ġcom . sys u . example . utils . Context Api Ċ import Ġcom . sys u . example . utils . add Ċ import Ġcom . sys u . example . utils . return Toast 3 Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . bottom _ sheet Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . cancel _ navigation Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . config _ map _ bar Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . map _ container Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . navigation _ bar Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . start _ navigation Ċ import Ġkotlinx . android . synt hetic . main . activity _ map . stop _ navigation Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . as _ end _ point Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . as _ start _ point Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . point _ actual _ location Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . point _ id Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . point _ map _ id Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . point _ name Ċ import Ġkotlinx . android . synt hetic . main . bottom _ sheet _ point _ info . point _ plan _ location Ċ Ċ class ĠMap Activity Ġ: ĠAppCompatActivity (), ĠMap Container . On Marker ClickListener , ĠUpload Map Dialog Fragment . Update Map Bitmap , ĊĠĠĠ ĠAdd Point Dialog Fragment . Update Map Point , ĠUpload Map Dialog Fragment . Update Map Info , ĠAdd Edge Dialog Fragment . Update Map Edge , ĠSearch Map Dialog Fragment . GetAll Points Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġbitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġmap Info : ĠDeep Nav i Map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Points Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Edges Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . m Markers Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . m Edges Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . pos (- 1 f , Ġ- 1 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġall Points : ĠMutable List < Deep Nav i Point >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Info Ġ= Ġthis . map Info Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . m Markers Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Edges Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . m Markers Ġ= Ġvalue . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMarker ( it . plan Coordinate . x Ġ/ Ġmap Info . plan Size [ 0 ], Ġit . plan Coordinate . y Ġ/ Ġmap Info . plan Size [ 1 ], Ġname Ġ= Ġit . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedges Ġ= Ġmutable ListOf < Deep Nav i Edge >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( deep Nav i Manager . path Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . forEach Indexed Ġ{ Ġi 1 , Ġp 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp 1 Id Ġ= Ġp 1 . id Ġ?: Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 . ad jac ence . forEach Ġ{ Ġp 2 Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi 2 Ġ= Ġvalue . indexOf First Ġ{ Ġit . id Ġ== Ġp 2 Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i 2 Ġ> Ġi 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedges . add ( Deep Nav i Edge ( p 1 . map Id , Ġp 1 Id , Ġp 2 Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġp 1 Id Ġ= Ġvalue . first (). id Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 1 Ġuntil Ġvalue . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp 2 Id Ġ= Ġvalue [ index ]. id Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedges . add ( Deep Nav i Edge ( map Info . id !! , Ġp 1 Id , Ġp 2 Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 Id Ġ= Ġp 2 Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Edges Ġ= Ġedges ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġall Edges : ĠMutable List < Deep Nav i Edge >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . m Edges Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarkers Ġ= Ġmap _ container . m Markers Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . m Edges Ġ= Ġvalue . map Ġ{ Ġdeep Nav i Edge Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLine Edge ( markers . indexOf First Ġ{ Ġdeep Nav i Edge . start Point Id Ġ== Ġit . name Ġ}, Ġmarkers . indexOf First Ġ{ Ġdeep Nav i Edge . end Point Id Ġ== Ġit . name Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġmarker : ĠMarker ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġedge : ĠLine Edge ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbottom Sheet Behavior : ĠBottom Sheet Behavior < Relative Layout > ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdeep Nav i Manager : ĠDeep Nav i Manager ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ map ) ĊĊĠĠĠĠĠĠĠ Ġinit Map Config Bar () ĊĠĠĠĠĠĠĠ Ġinit Map And Info () ĊĠĠĠĠĠĠĠ Ġinit Navigation () ĊĊĠĠĠĠĠĠĠ Ġ// Ġtest () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġ(( resources . get Drawable ( R . drawable . map _ example )) Ġas ? ĠBitmap Drawable )?. bitmap ĊĠĠĠĠĠĠĠ Ġmap _ container . m MapView . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ Ġ// Ġmap _ container . m Markers Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠMarker ( 0 . 0 2 f , Ġ 0 . 0 2 f , ĠR . drawable . point ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠMarker ( 0 . 9 8 f , Ġ 0 . 0 2 f , ĠR . drawable . point ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠMarker ( 0 . 9 8 f , Ġ 0 . 9 8 f , ĠR . drawable . point ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠMarker ( 0 . 0 2 f , Ġ 0 . 9 8 f , ĠR . drawable . point ) ĊĠĠĠĠĠĠĠ Ġ// Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġmap _ container . m Edges Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠLine Edge ( 0 , Ġ 1 ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠLine Edge ( 1 , Ġ 2 ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠLine Edge ( 2 , Ġ 3 ), ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠLine Edge ( 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġmap _ container . pos ( 0 . 5 f , Ġ 0 . 9 8 f ) ĊĠĠĠĠĠĠĠ Ġ// Ġmap _ container . rotate (- 6 0 f ) ĊĠĠĠĠĠĠĠ Ġmap Info Ġ= ĠDeep Nav i Map (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" 5 e 6 e 4 1 0 ff 1 4 3 bf 7 cc 1 ca 3 4 4 a " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Path Ġ= Ġ" http :// 1 2 7 . 0 . 0 . 1 : 5 0 0 0 / static / 8 6 0 bfe 6 2 6 6 cc 1 1 eaa 1 2 5 1 8 5 e 0 ff 2 d 4 9 d " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" è¶ħ ç®Ĺ 5 æ¥¼ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Unit Ġ= Ġ" px " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Size Ġ= Ġfloat ArrayOf ( 5 7 7 f , Ġ 3 7 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Unit Ġ= Ġ" m " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Size Ġ= Ġfloat ArrayOf ( 7 0 f , Ġ 4 0 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorigin In Plan Ġ= Ġfloat ArrayOf ( 1 7 . 3 1 f , Ġ 3 6 2 . 6 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorigin In Actual Ġ= Ġfloat ArrayOf ( 1 . 4 f , Ġ 3 9 . 2 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Angle Ġ= Ġfloat ArrayOf ( 1 8 0 f , Ġ 0 f , Ġ 9 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstandard Vector Ġ= Ġ" 0 , 1 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġall Points Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info !!. percentage Point ( 0 . 0 2 f , Ġ 0 . 9 8 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ad jac ence Ġ= ĠarrayOf (" 1 ", Ġ" 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ" a " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info !!. percentage Point ( 0 . 9 8 f , Ġ 0 . 9 8 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ad jac ence Ġ= ĠarrayOf (" 0 ", Ġ" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ" b " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info !!. percentage Point ( 0 . 9 8 f , Ġ 0 . 0 2 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġ" 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ad jac ence Ġ= ĠarrayOf (" 1 ", Ġ" 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ" c " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info !!. percentage Point ( 0 . 0 2 f , Ġ 0 . 0 2 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġ" 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ad jac ence Ġ= ĠarrayOf (" 0 ", Ġ" 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġ" d " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// Ġvar Ġtask : ĠRunnable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// Ġtask Ġ= ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġif Ġ( index Ġ< Ġpos Set . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmap Info ?. model To World ( pos Set [ index ]. toFloat List (), Ġtrue ) Ġ?: Ġreturn @ Runnable ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġmap _ container . pos ( data [ 0 ] Ġ/ Ġmap Info !!. actual Size [ 0 ], Ġdata [ 1 ] Ġ/ Ġmap Info !!. actual Size [ 1 ]) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġmap _ container . rotate (- qu aternion To Euler ( angle Set [ index ]. toFloat List ())[ 2 ]) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġif Ġ( task Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . post Delayed ( task , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġmap _ container . post Delayed ( task , Ġ 2 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Map And Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap _ container . on Marker ClickListener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior Ġ= ĠBottom Sheet Behavior . from ( bottom _ sheet ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠBottom Sheet Behavior . STATE _ COLL AP SED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Bottom Sheet Callback ( object Ġ: ĠBottom Sheet Behavior . Bottom Sheet Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġoverride Ġfun Ġon Slide ( bottom Sheet : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ// ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġoverride Ġfun Ġon StateChanged ( bottom Sheet : ĠView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠ Ġ// ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġas _ start _ point . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . tag Ġas ĠPair < Deep Nav i Point , ĠInt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġas _ end _ point . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . tag Ġas ĠPair < Deep Nav i Point , ĠInt > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhide Bottom Sheet Listener Ġ= ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bottom Sheet Behavior . state Ġ!= ĠBottom Sheet Behavior . STATE _ COLL AP SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ COLL AP SED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbottom _ sheet . setOnClickListener ( hide Bottom Sheet Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Map Config Bar () Ġ{ ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . upload ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpload Map Dialog Fragment ( this , Ġthis , Ġthis ). show ( support FragmentManager , Ġ" upload Map ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . search ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Map Dialog Fragment ( this , Ġthis , Ġthis ). show ( support FragmentManager , Ġ" search Map ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . add _ point ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( map Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener Ġreturn Toast 3 (" map Ġinfo Ġis Ġnull , Ġyour Ġshould Ġcreate Ġa Ġmap Ġor Ġload Ġa Ġmap ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Point Dialog Fragment ( map Info !! , Ġthis ). show ( support FragmentManager , Ġ" add Point ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠfindViewById < Button >( R . id . add _ edge ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( map Info Ġ== Ġnull Ġ|| Ġmap Info !!. id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener Ġreturn Toast 3 (" map Ġinfo Ġis Ġnull Ġor Ġmap Ġid Ġis Ġnull , Ġyour Ġshould Ġcreate Ġa Ġmap Ġor Ġload Ġa Ġmap ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Points Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Points ( GET _ POINTS , Ġmap Info !! ) ĠgetAll Points @{ Ġmsg , Ġpoints Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( points Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Api . handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Points Ġ= Ġpoints ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Edge Dialog Fragment ( map Info !!. id !! , Ġpoints , Ġthis ). show ( support FragmentManager , Ġ" add Edge ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Api . toast ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" please Ġwait Ġfor Ġpoints ' Ġloading ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Edge Dialog Fragment ( map Info !!. id !! , Ġall Points !! , Ġthis ). show ( support FragmentManager , Ġ" add Edge ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Navigation () Ġ{ ĊĠĠĠĠĠĠĠ Ġdeep Nav i Manager Ġ= ĠTrain Activity . config By WS ( this , Ġnull , Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . flag Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ config By WS Ġreturn Toast 3 (" navigation Ġfinished ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Info Ġ= Ġthis . map Info Ġ?: Ġreturn @ config By WS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoordinate Ġ= Ġmap Info . model To World ( listOf ( it . co or . x , Ġit . co or . y , Ġit . co or . z ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . pos ( coordinate [ 0 ] Ġ/ Ġmap Info . actual Size [ 0 ], Ġcoordinate [ 1 ] Ġ/ Ġmap Info . actual Size [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . rotate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( map Info . is Clock Wise ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . rotation Ġ- Ġmap Info . offset Angle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info . offset Angle Ġ- Ġit . rotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcancel _ navigation . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation _ bar . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig _ map _ bar . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeep Nav i Manager . path Id Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Nav i Manager . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . all Points Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconfig DataSet Ġ= ĠConfig Property . SIGNAL _ CONFIG _ SET . value ?. split (',') ?. toSet () Ġ?: Ġempty Set () ĊĠĠĠĠĠĠĠ Ġstop _ navigation . setOnClickListener Ġ{ ĠDeep Nav i Manager . stop () Ġ} ĊĠĠĠĠĠĠĠ Ġstart _ navigation . setOnClickListener Ġ{ ĠDeep Nav i Manager . start ( Config Property . get Rates (), Ġconfig DataSet ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġon Marker Click ( view : ĠView ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= Ġall Points ?. get ( position ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġpoint _ name . text Ġ= Ġ"${ point . name } Ġ( index : Ġ$ position )" ĊĠĠĠĠĠĠĠ Ġvar Ġt Ġ= Ġpoint . plan Coordinate ĊĠĠĠĠĠĠĠ Ġpoint _ plan _ location . text Ġ= Ġ" show : Ġ${ t . x } px Ġx Ġ${ t . y } px Ġx Ġ${ t . z } px " ĊĠĠĠĠĠĠĠ Ġt Ġ= Ġpoint . actual Coordinate ĊĠĠĠĠĠĠĠ Ġpoint _ actual _ location . text Ġ= Ġ" actual : Ġ${ t . x } m Ġx Ġ${ t . y } m Ġx Ġ${ t . z } m " ĊĠĠĠĠĠĠĠ Ġpoint _ id . text Ġ= Ġ" id : Ġ${ point . id }" ĊĠĠĠĠĠĠĠ Ġpoint _ map _ id . text Ġ= Ġ" id : Ġ${ point . map Id }" ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġpoint Ġto Ġposition ĊĠĠĠĠĠĠĠ Ġas _ start _ point . tag Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġas _ end _ point . tag Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" ä½ł çĤ¹åĩ» äºĨ ç¬¬ " Ġ+ Ġposition Ġ+ Ġ" ä¸ª marker ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bottom Sheet Behavior . state Ġ!= ĠBottom Sheet Behavior . STATE _ COLL AP SED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Sheet Behavior . state Ġ= ĠBottom Sheet Behavior . STATE _ COLL AP SED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( bitmap : ĠBitmap , Ġload : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . bitmap Ġ= Ġbitmap ĊĠĠĠĠĠĠĠ Ġmap _ container . m MapView . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ Ġthis . map Info Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġflag : ĠInt , Ġname : ĠString ?, Ġid : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Info Ġ= Ġthis . map Info Ġ?: Ġreturn Ġreturn Toast 3 (" map Ġinfo Ġis Ġnull , Ġso Ġcannot Ġlocate Ġpercentage Ġpoint ") ĊĠĠĠĠĠĠĠ Ġ/* update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info . plan Size [ 0 ] Ġ* Ġx , Ġmap Info . plan Size [ 1 ] Ġ* Ġy , Ġmap Info . plan Size [ 2 ] Ġ* Ġz , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Info . actual Size [ 0 ] Ġ* Ġx , Ġmap Info . actual Size [ 1 ] Ġ* Ġy , Ġmap Info . actual Size [ 2 ] Ġ* Ġz , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflag , Ġname ĊĠĠĠĠĠĠĠ Ġ) */ ĊĠĠĠĠĠĠĠ Ġif Ġ( flag Ġ== Ġ 1 Ġ|| Ġx Ġ< Ġ 0 f Ġ|| Ġy Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( marker Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . remove Marker ( marker !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( flag Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( marker Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠDeep Nav i Point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . map Id Ġ= Ġmap Info . id Ġ?: Ġreturn Ġreturn Toast 3 (" map Ġid Ġis Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . plan Coordinate Ġ= ĠDeep Nav i Coordinator ( x Ġ* Ġmap Info . plan Size [ 0 ], Ġy Ġ* Ġmap Info . plan Size [ 1 ], Ġz Ġ* Ġmap Info . plan Size [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . actual Coordinate Ġ= ĠDeep Nav i Coordinator ( x Ġ* Ġmap Info . actual Size [ 0 ], Ġy Ġ* Ġmap Info . actual Size [ 1 ], Ġz Ġ* Ġmap Info . actual Size [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdata . name Ġ= Ġname Ġ?: Ġmarker !!. index . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . id Ġ= Ġid Ġ?: ĠINVALID _ STR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Points Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Points Ġ= Ġmutable ListOf ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Points !!. add ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. data Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( marker Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= ĠMarker ( x , Ġy , ĠR . drawable . point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . add Marker ( marker !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( x Ġ< Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. scale X Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. scale Y Ġ= Ġy ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. scale X Ġ= Ġx Ġ/ Ġbitmap !!. width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. scale Y Ġ= Ġy Ġ/ Ġbitmap !!. height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( x : ĠFloat , Ġy : ĠFloat , Ġz : ĠFloat , Ġx F : ĠFloat , Ġy F : ĠFloat , Ġz F : ĠFloat , Ġflag : ĠInt , Ġname : ĠString ?, Ġid : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Info Ġ= Ġthis . map Info Ġ?: Ġreturn Ġreturn Toast 3 (" map Ġinfo Ġis Ġnull , Ġso Ġcannot Ġlocate Ġplan Ġpoint Ġand Ġactual Ġpoint ") ĊĠĠĠĠĠĠĠ Ġif Ġ( flag Ġ== Ġ 1 Ġ|| Ġx Ġ< Ġ 0 f Ġ|| Ġy Ġ< Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( marker Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . remove Marker ( marker !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( flag Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( marker Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠDeep Nav i Point () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . map Id Ġ= Ġmap Info . id Ġ?: Ġreturn Ġreturn Toast 3 (" map Ġid Ġis Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . plan Coordinate Ġ= ĠDeep Nav i Coordinator ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . actual Coordinate Ġ= ĠDeep Nav i Coordinator ( xF , Ġy F , Ġz F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdata . name Ġ= Ġname Ġ?: Ġmarker !!. index . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . id Ġ= Ġid Ġ?: ĠINVALID _ STR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Points Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Points Ġ= Ġmutable ListOf ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Points !!. add ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. data Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( marker Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ= ĠMarker ( x Ġ/ Ġbitmap !!. width , Ġy Ġ/ Ġbitmap !!. height , ĠR . drawable . point ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . add Marker ( marker !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. scale X Ġ= Ġx Ġ/ Ġbitmap !!. width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker !!. scale Y Ġ= Ġy Ġ/ Ġbitmap !!. height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( map Info : ĠDeep Nav i Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . map Info Ġ= Ġmap Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( p Id 1 : ĠString ?, Ġp Id 2 : ĠString ?, Ġflag : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( map Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreturn Toast 3 (" map Ġinfo Ġis Ġnull , Ġso Ġcannot Ġlocate Ġedge ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmarkers Ġ= Ġmap _ container . m Markers Ġ?: Ġreturn Ġreturn Toast 3 (" map 's Ġpoints Ġare Ġempty ") ĊĠĠĠĠĠĠĠ Ġif Ġ( flag Ġ== Ġ 1 Ġ|| Ġp Id 1 . isNull OrEmpty () Ġ|| Ġp Id 2 . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edge Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . remove Edge ( edge !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedge Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( flag Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( edge Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġall Points !!. find Ġ{ Ġit . id Ġ== Ġp Id 1 Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst . ad jac ence Ġ= Ġfirst . ad jac ence . add ( p Id 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġall Points !!. find Ġ{ Ġit . id Ġ== Ġp Id 2 Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond . ad jac ence Ġ= Ġsecond . ad jac ence . add ( p Id 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedge Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( edge Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedge Ġ= ĠLine Edge ( markers . find Ġ{ Ġit . name Ġ== Ġp Id 1 Ġ} ?. index Ġ?: Ġreturn , Ġmarkers . find Ġ{ Ġit . name Ġ== Ġp Id 2 Ġ} ?. index Ġ?: Ġreturn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap _ container . add Edge ( edge !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedge !!. start Point Index Ġ= Ġmarkers . find Ġ{ Ġit . name Ġ== Ġp Id 1 Ġ} ?. index Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedge !!. end Point Index Ġ= Ġmarkers . find Ġ{ Ġit . name Ġ== Ġp Id 2 Ġ} ?. index Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon All Points Got ( points : ĠMutable List < Deep Nav i Point >, Ġpath Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdeep Nav i Manager . path Id Ġ= Ġpath Id ĊĠĠĠĠĠĠĠ Ġthis . all Points Ġ= Ġpoints ĊĠĠĠĠĠĠĠ Ġif Ġ( path Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig _ map _ bar . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation _ bar . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDeep Nav i Manager . on Request Permissions Result ( request Code , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO : Ġ åĽ¾çīĩ æł¼å¼ı Ċ // ĠTODO : Ġfragment Ġscroll View ä¸İ è½¯ éĶ® çĽĺ çļĦ åĨ² çªģ Ċ // ĠTODO : Ġ åĿĲæłĩ ç³» è½¬æį¢ Ċ Ċ // Ġ[ ä¸ī ç»´ ç©ºéĹ´ åĿĲæłĩ ç³» åıĺ æį¢ - æĹ ĭ è½¬ çŁ©éĺµ ]( https :// blog . cs dn . net / fire fly ch h / article / details / 8 2 3 5 2 7 1 0 ? depth _ 1 - utm _ source = distribute . pc _ relevant . none - task & utm _ source = distribute . pc _ relevant . none - task ) Ċ // Ġ[ å¦Ĥä½ķ éĢļ ä¿ Ĺ åľ° è§£éĩĬ æ¬ § æĭī è§Ĵ ï¼Ł ä¹ĭåĲİ ä¸º ä½ķ è¦ģ å¼ķåħ¥ åĽĽ åħĥ æķ° ï¼Ł]( https :// www . zhihu . com / question / 4 7 7 3 6 3 1 5 ) Ċ // Ġ[ æĹ ĭ è½¬ çŁ©éĺµ * çĻ¾ åº¦ çĻ¾ ç§ĳ ]( https :// ba ike . baidu . com / item /% E 6 % 9 7 % 8 B % E 8 % BD % AC % E 7 % 9 F % A 9 % E 9 % 9 8 % B 5 / 3 2 6 5 1 8 1 ? fr = al add in ) Ċ // Ġ[ ãĢĲ Unity ç¼ĸç¨ĭ ãĢĳ æ¬ § æĭī è§Ĵ ä¸İ ä¸ĩ åĲĳ èĬĤ æŃ» éĶģ ï¼Ī åĽ¾ æĸĩ çīĪ ï¼ī ]( https :// blog . cs dn . net / And rew Fan / article / details / 6 0 9 8 1 4 3 7 # ) Ċ