package Ġnet . v on for st . ev map . api Ċ Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ import Ġokhttp 3 . Call Ċ import Ġokhttp 3 . Callback Ċ import Ġokhttp 3 . Response Ċ import Ġorg . json . JSONArray Ċ import Ġjava . io . IOException Ċ import Ġkotlin . coroutines . resume With Exception Ċ Ċ operator Ġfun Ġ< T > ĠJSONArray . iterator (): ĠIterator < T > Ġ= ĊĠĠĠ Ġ( 0 Ġuntil Ġlength ()). as Sequence (). map Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġget ( it ) Ġas ĠT ĊĠĠĠ Ġ}. iterator () Ċ Ċ @ Experimental Cor outines Api Ċ suspend Ġfun ĠCall . await (): ĠResponse Ġ{ ĊĠĠĠ Ġreturn Ġsuspend C ancellable Coroutine Ġ{ Ġcontinuation Ġ-> ĊĠĠĠĠĠĠĠ Ġenqueue ( object Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinuation . resume ( response ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( continu ation . is Cancelled ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinuation . resume With Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcontinuation . invoke On Cancellation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ignore Ġcancel Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ const Ġval Ġearth Radius Km : ĠDouble Ġ= Ġ 6 3 7 2 . 8 Ċ Ċ /** Ċ Ġ* ĠCalculates Ġthe Ġdistance Ġbetween Ġtwo Ġpoints Ġon ĠEarth Ġin Ġmeters . Ċ Ġ* ĠLat itude Ġand Ġlongitude Ġshould Ġbe Ġgiven Ġin Ġdegrees . Ċ Ġ*/ Ċ fun Ġdistance Between ( ĊĠĠĠ Ġstart Latitude : ĠDouble , Ġstart Longitude : ĠDouble , ĊĠĠĠ Ġend Latitude : ĠDouble , Ġend Longitude : ĠDouble Ċ ): ĠDouble Ġ{ ĊĠĠĠ Ġ// Ġsee Ġhttps :// ro set tac ode . org / wiki / Ha vers ine _ formula # Java ĊĠĠĠ Ġval Ġd Lat Ġ= ĠMath . to Radians ( end Latitude Ġ- Ġstart Latitude ); ĊĠĠĠ Ġval Ġd Lon Ġ= ĠMath . to Radians ( end Longitude Ġ- Ġstart Longitude ); ĊĠĠĠ Ġval Ġorigin Lat Ġ= ĠMath . to Radians ( start Latitude ); ĊĠĠĠ Ġval Ġdestination Lat Ġ= ĠMath . to Radians ( end Latitude ); ĊĊĠĠĠ Ġval Ġa Ġ= ĠMath . pow ( Math . sin ( d Lat Ġ/ Ġ 2 ), Ġ 2 . toDouble ()) Ġ+ ĠMath . pow ( ĊĠĠĠĠĠĠĠ ĠMath . sin ( d Lon Ġ/ Ġ 2 ), ĊĠĠĠĠĠĠĠĠ 2 . toDouble () ĊĠĠĠ Ġ) Ġ* ĠMath . cos ( origin Lat ) Ġ* ĠMath . cos ( destination Lat ); ĊĠĠĠ Ġval Ġc Ġ= Ġ 2 Ġ* ĠMath . asin ( Math . sqrt ( a )); ĊĠĠĠ Ġreturn Ġearth Radius Km Ġ* Ġc Ġ* Ġ 1 0 0 0 ; Ċ }