package Ġcom . az har . osm Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġorg . os md roid . config . Configuration Ċ import Ġorg . os md roid . tile provider . tile source . Tile Source Factory Ċ import Ġorg . os md roid . util . Geo Point Ċ import Ġorg . os md roid . views . Custom Zoom Buttons Controller Ċ import Ġorg . os md roid . views . Map Controller Ċ import Ġorg . os md roid . views . overlay . Marker Ċ import Ġorg . os md roid . views . overlay . Overlay Item Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġvar Ġmodel Main List : ĠMutable List < Model Main > Ġ= ĠArrayList () ĊĠĠĠ Ġlateinit Ġvar Ġmap Controller : ĠMap Controller ĊĠĠĠ Ġlateinit Ġvar Ġoverlay Item : ĠArrayList < Overlay Item > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ ĠConfiguration . getInstance (). load ( this , ĠPreference Manager . getDefault SharedPreferences ( this )) ĊĊĠĠĠĠĠĠĠ Ġval Ġgeo Point Ġ= ĠGeo Point (- 6 . 3 0 3 5 4 6 7 , Ġ 1 0 6 . 8 6 9 3 5 1 3 ) ĊĠĠĠĠĠĠĠ Ġmap View . set Multi Touch Controls ( true ) ĊĠĠĠĠĠĠĠ Ġmap View . controller . animate To ( geo Point ) ĊĠĠĠĠĠĠĠ Ġmap View . set Tile Source ( Tile Source Factory . DEFAULT _ TILE _ SOURCE ) ĊĠĠĠĠĠĠĠ Ġmap View . zoom Controller . setVisibility ( Custom Zoom Buttons Controller . Visibility . NE VER ) ĊĊĠĠĠĠĠĠĠ Ġmap Controller Ġ= Ġmap View . controller Ġas ĠMap Controller ĊĠĠĠĠĠĠĠ Ġmap Controller . set Center ( geo Point ) ĊĠĠĠĠĠĠĠ Ġmap Controller . zoom To ( 1 5 ) ĊĊĠĠĠĠĠĠĠ Ġget Location Marker () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// get Ġlat Ġlong ĊĠĠĠ Ġprivate Ġfun Ġget Location Marker () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġassets . open (" sample _ maps . json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġstream . available () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream . read ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Content Ġ= ĠString ( buffer , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( str Content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Result Ġ= ĠjsonObject . get JSONArray (" results ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġjson Array Result . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Result Ġ= Ġjson Array Result . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Main Ġ= ĠModel Main () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Main . str Name Ġ= ĠjsonObject Result . getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Main . str V ic inity Ġ= ĠjsonObject Result . getString (" vic inity ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Ġlat Ġlong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Geo Ġ= ĠjsonObject Result . getJSONObject (" geometry ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Loc Ġ= ĠjsonObject Geo . getJSONObject (" location ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Main . lat Loc Ġ= ĠjsonObject Loc . getDouble (" lat ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Main . long Loc Ġ= ĠjsonObject Loc . getDouble (" lng ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Main List . add ( model Main ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Marker ( model Main List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" O ops , Ġada Ġyang Ġtidak Ġber es . ĠC ob a Ġul ang i Ġbe ber apa Ġsa at Ġlag i .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Marker ( model List : ĠList < Model Main >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmodel List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Item Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Item . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOverlay Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel List [ i ]. str Name , Ġmodel List [ i ]. str V ic inity , ĠGeo Point ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel List [ i ]. lat Loc , Ġmodel List [ i ]. long Loc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠModel Main () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . str Name Ġ= Ġmodel List [ i ]. str Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . str V ic inity Ġ= Ġmodel List [ i ]. str V ic inity ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarker Ġ= ĠMarker ( map View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . icon Ġ= Ġresources . get Drawable ( R . drawable . ic _ place ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . position Ġ= ĠGeo Point ( model List [ i ]. lat Loc , Ġmodel List [ i ]. long Loc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . related Object Ġ= Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . info Window Ġ= ĠCustom Info Window ( map View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker . setOn Marker ClickListener Ġ{ Ġitem , Ġarg 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . show Info Window () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . overlay s . add ( marker ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠConfiguration . getInstance (). load ( this , ĠPreference Manager . getDefault SharedPreferences ( this )) ĊĠĠĠĠĠĠĠ Ġif Ġ( map View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . on Resume () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠConfiguration . getInstance (). load ( this , ĠPreference Manager . getDefault SharedPreferences ( this )) ĊĠĠĠĠĠĠĠ Ġif Ġ( map View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap View . on Pause () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }