package Ġcom . equ alex perts . client . software design systems . eat out Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . equ alex perts . client . software design systems . eat out . map . E at Out To Help Out Info Window Ċ import Ġcom . equ alex perts . client . software design systems . eat out . map . E at Out To Help Out Marker St y ler Ċ import Ġcom . equ alex perts . client . software design systems . eat out . services . Location Ċ import Ġcom . equ alex perts . client . software design systems . eat out . services . Location SearchResult Ċ import Ġcom . equ alex perts . client . software design systems . eat out . services . Restaurant Service Result Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġorg . os md roid . bonus pack . k ml . K ml Document Ċ import Ġorg . os md roid . bonus pack . k ml . K ml Pl ac emark Ċ import Ġorg . os md roid . events . Map Listener Ċ import Ġorg . os md roid . events . Scroll Event Ċ import Ġorg . os md roid . events . Zoom Event Ċ import Ġorg . os md roid . util . BoundingBox Ċ import Ġorg . os md roid . util . Geo Point Ċ import Ġorg . os md roid . views . overlay . Folder Overlay ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġconfigure Map () ĊĊĠĠĠĠĠĠĠ Ġsearch . setOn Editor ActionListener Ġ{ Ġ_, Ġaction Id , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperform Search ( search . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġperform Search ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġservices (). location Search Service . search ( text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLocation SearchResult . Success Ġ-> Ġmain Map . controller . animate To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeo Point ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . location . latitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . location . longitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLocation SearchResult . NotFound Ġ-> Ġsearch . error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . location _ not _ found ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLocation SearchResult . Network Error Ġ-> Ġsearch . error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . location _ network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLocation SearchResult . ServerError Ġ-> Ġsearch . error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . location _ server _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Map () Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Map . set Multi Touch Controls ( true ) ĊĊĠĠĠĠĠĠĠ Ġmain Map . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast View ed Location Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservices (). last View ed Location Service . last View ed Location ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo Point Ġ= ĠGeo Point ( last View ed Location . latitude , Ġlast View ed Location . longitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Map . zoom To BoundingBox ( BoundingBox . from Geo Points ( listOf ( geo Point )), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Rest aurants ( last View ed Location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmain Map . set Scroll able Area Limit Longitude (- 8 . 6 0 8 5 , Ġ 1 . 6 0 8 8 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġmain Map . set Scroll able Area Limit Latitude ( 6 0 . 8 5 7 3 , Ġ 4 9 . 1 9 1 6 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġmain Map . min Zoom Level Ġ= Ġ 1 7 . 0 ĊĠĠĠĠĠĠĠ Ġmain Map . max Zoom Level Ġ= Ġ 2 1 . 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġlast Location Ġ= ĠLocation ( 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġmain Map . add Map Listener ( object Ġ: ĠMap Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll ( event : ĠScroll Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Center Ġ= Ġmain Map . map Center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Location Ġ= ĠLocation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Center . latitude , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Center . longitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target Location . grid X Ġ!= Ġlast Location . grid X Ġ|| Ġtarget Location . grid Y Ġ!= Ġlast Location . grid Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Location Ġ= Ġtarget Location ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Rest aurants ( target Location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Zoom ( event : ĠZoom Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Rest aurants ( target Location : ĠLocation ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġservices (). restaurant Service . fetch Rest aurants ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Location ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRest aurant Service Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠK ml Document () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . rest aurants . forEach Ġ{ Ġrestaurant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . m K ml Root . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK ml Pl ac emark ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestaurant . to Marker ( main Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Extended Data (" postcode ", Ġrestaurant . postcode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Rest aurants ( document ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Rest aurants ( ĊĠĠĠĠĠĠĠ Ġrest aurants : ĠK ml Document ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Map . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Window Ġ= ĠE at Out To Help Out Info Window ( main Map ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservices (). restaurant Info Provider . provide Restaurant Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Marker Ġ= ĠContext Compat . get Drawable ( this , ĠR . drawable . ic _ marker ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeat Out To Help Out Marker St y ler Ġ= ĠE at Out To Help Out Marker St y ler ( default Marker , Ġinfo Window ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrestaurant Overlay Ġ= Ġrest aurants . m K ml Root . build Overlay ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Map , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeat Out To Help Out Marker St y ler , Ġrest aurants ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Map . overlay s . removeAll Ġ{ Ġit Ġis ĠFolder Overlay Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Map . overlay s . add ( restaurant Overlay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Map . invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġmain Map . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġval Ġmap Center Ġ= Ġmain Map . map Center ĊĠĠĠĠĠĠĠ Ġservices (). last View ed Location Service . last View ed Location Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation ( map Center . latitude , Ġmap Center . longitude ) ĊĠĠĠĠĠĠĠ Ġmain Map . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġservices () Ġ= Ġ( application Ġas ĠE at Out To Help Out Application ). service Layer Ċ }