package Ġcom . kotlin . education . android . easy todo . activities Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ Ċ import Ġcom . google . android . gms . maps . Camera Update Factory Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . On Map Ready Callback Ċ import Ġcom . google . android . gms . maps . Support Map Fragment Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġcom . google . android . gms . maps . model . Marker Ċ import Ġcom . google . android . gms . maps . model . Marker Options Ċ import Ġcom . kotlin . education . android . easy todo . R Ċ import Ġcom . kotlin . education . android . easy todo . constants . Intent Constants Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ /** Ċ Ġ* ĠThe Ġactivity Ġfor Ġshowing Ġa Ġmap . Ċ Ġ* ĠInter esting Ġlink . ĠThe ĠGoogle ĠMaps ĠUtility . Ċ Ġ* Ġhttps :// github . com / google maps / android - maps - utils Ċ Ġ*/ Ċ class ĠMaps Activity Ġ: ĠAppCompatActivity (), ĠOn Map Ready Callback , ĠGoogle Map . On Marker Drag Listener Ġ{ ĊĊĠĠĠ Ġ// Ġall Ġthe Ġstatic Ġthings Ġfor Ġthe Ġactivity ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmethod Ġfor Ġcreating Ġintent Ġto Ġrun Ġthe Ġactivity . ĠThe Ġactivity Ġshould Ġbe Ġonly Ġrun ĊĠĠĠĠĠĠĠĠ Ġ* Ġusing Ġthis Ġmethod . ĠThis Ġway Ġno Ġone Ġdoesn 't Ġneed Ġto Ġknow Ġwhat Ġto Ġput Ġto Ġintent ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Intent ( context : ĠContext , Ġlatitude : ĠDouble ?, Ġlongitude : ĠDouble ?): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMaps Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent Constants . LAT IT UDE , Ġlatitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent Constants . LONG IT UDE , Ġlongitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġdefault Ġlocations . ĠNow Ġset Ġto ĠSp il ber k Ġcast le Ġin ĠBr no ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ LAT IT UDE Ġ= Ġ 4 9 . 1 9 5 5 7 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ LONG IT UDE Ġ= Ġ 1 6 . 5 9 9 3 9 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlatitude : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlongitude : ĠDouble ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlocation Changed : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Map : ĠGoogle Map ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ maps ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ Ġfinish () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġlocations Ġcoming Ġfrom ĠIntent . ĠUsed Ġfor Ġlocation Ġediting . ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( Intent Constants . LONG IT UDE ) Ġ&& Ġintent . has Extra ( Intent Constants . LONG IT UDE )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġintent . getDouble Extra ( Intent Constants . LAT IT UDE , ĠComp anion . DEFAULT _ LAT IT UDE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġintent . getDouble Extra ( Intent Constants . LONG IT UDE , ĠComp anion . DEFAULT _ LONG IT UDE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠObtain Ġthe ĠSupport Map Fragment Ġand Ġget Ġnotified Ġwhen Ġthe Ġmap Ġis Ġready Ġto Ġbe Ġused . ĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . map ) Ġas ĠSupport Map Fragment ĊĠĠĠĠĠĠĠ Ġmap Fragment . getMap Async ( this ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMan ip ulates Ġthe Ġmap Ġonce Ġavailable . ĊĠĠĠĠ Ġ* ĠThis Ġcallback Ġis Ġtriggered Ġwhen Ġthe Ġmap Ġis Ġready Ġto Ġbe Ġused . ĊĠĠĠĠ Ġ* ĠThis Ġis Ġwhere Ġwe Ġcan Ġadd Ġmarkers Ġor Ġlines , Ġadd Ġlisteners Ġor Ġmove Ġthe Ġcamera . ĠIn Ġthis Ġcase , ĊĠĠĠĠ Ġ* Ġwe Ġjust Ġadd Ġa Ġmarker Ġnear ĠSy dn ey , ĠA ustralia . ĊĠĠĠĠ Ġ* ĠIf ĠGoogle ĠPlay Ġservices Ġis Ġnot Ġinstalled Ġon Ġthe Ġdevice , Ġthe Ġuser Ġwill Ġbe Ġpromp ted Ġto Ġinstall ĊĠĠĠĠ Ġ* Ġit Ġinside Ġthe ĠSupport Map Fragment . ĠThis Ġmethod Ġwill Ġonly Ġbe Ġtriggered Ġonce Ġthe Ġuser Ġhas ĊĠĠĠĠ Ġ* Ġinstalled ĠGoogle ĠPlay Ġservices Ġand Ġreturned Ġto Ġthe Ġapp . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Map Ready ( google Map : ĠGoogle Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Map Ġ= Ġgoogle Map ĊĊĠĠĠĠĠĠĠ Ġval Ġposition : ĠLat Lng ĊĠĠĠĠĠĠĠ Ġif Ġ( latitude Ġ!= Ġnull Ġ&& Ġlongitude Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠLat Lng ( latitude !! , Ġlongitude !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= ĠLat Lng ( Companion . DEFAULT _ LAT IT UDE , ĠComp anion . DEFAULT _ LAT IT UDE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠMarker Options Ġis Ġused Ġto Ġstyle Ġthe Ġmarker . ĊĠĠĠĠĠĠĠ Ġval Ġmarker Options : ĠMarker Options Ġ= ĠMarker Options (). position ( position ). draggable ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġa Ġmarker . ĠThe Ġadd Marker Ġmethod Ġreturns Ġthe Ġcreated Ġmarker Ġfor Ġlater Ġprocessing . ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan Ġstore Ġit Ġto Ġuse Ġlater . ĊĠĠĠĠĠĠĠ Ġvar Ġmarker : ĠMarker Ġ= Ġm Map . add Marker ( marker Options ) ĊĠĠĠĠĠĠĠ Ġ// Ġmove Ġthe Ġcamera ĊĠĠĠĠĠĠĠ Ġm Map . move Camera ( Camera Update Factory . new LatLng ( position )) ĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġlistener Ġfor Ġmarker Ġdragging . ĊĠĠĠĠĠĠĠ Ġm Map . setOn Marker Drag Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ maps , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ save Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Map Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFin ishes Ġthe ĠMap ĠActivity Ġby Ġsending Ġback Ġthe Ġlatitude Ġand Ġlongitude . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfinish Map Activity (){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġif Ġ( location Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent Constants . LAT IT UDE , Ġlatitude ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent Constants . LONG IT UDE , Ġlongitude ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġimplementation Ġfor Ġthe ĠGoogle Map . On Marker Drag Listener . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Marker Drag End ( p 0 : ĠMarker ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Changed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġp 0 ?. position ?. latitude ĊĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġp 0 ?. position ?. longitude ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Marker Drag Start ( p 0 : ĠMarker ?) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Marker Drag ( p 0 : ĠMarker ?) Ġ{ ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ