package Ġcom . example . challenge ap if r ave ga . service . ge od istance Ċ Ċ import Ġcom . example . challenge ap if r ave ga . model . Ub ic acion Ċ import Ġkotlin . math . round ToInt Ċ Ċ class ĠGeo Distance Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġdistance Algorithm ( is Km : Boolean , Ġlat 1 : ĠDouble , Ġlng 1 : ĠDouble , Ġlat 2 : ĠDouble , Ġlng 2 : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġradio Ti erra : ĠDouble Ġ= Ġif ( is Km ){ Ġ 6 3 7 1 . 0 Ġ} else { Ġ 3 9 5 8 . 7 5 Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġd Lat Ġ= ĠMath . to Radians ( lat 2 Ġ- Ġlat 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġd Lng Ġ= ĠMath . to Radians ( lng 2 Ġ- Ġlng 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġsind Lat Ġ= ĠMath . sin ( d Lat Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġsind Lng Ġ= ĠMath . sin ( d Lng Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġva 1 Ġ= ĠMath . pow ( s ind Lat , Ġ 2 . 0 ) Ġ+ Ġ( Math . pow ( s ind Lng , Ġ 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMath . cos ( Math . to Radians ( lat 1 )) Ġ* ĠMath . cos ( Math . to Radians ( lat 2 ))) ĊĠĠĠĠĠĠĠ Ġval Ġva 2 Ġ= Ġ 2 Ġ* ĠMath . atan 2 ( Math . sqrt ( va 1 ), ĠMath . sqrt ( 1 Ġ- Ġva 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġresultado Comp leto Ġ= Ġradio Ti erra Ġ* Ġva 2 ĊĊĠĠĠĠĠĠĠ Ġ// Red on de ar Ġvalor Ġcon ĠX Ġdec im ales ĊĠĠĠĠĠĠĠ Ġ// Ġval Ġscale Ġ= ĠMath . pow ( 1 0 . 0 , ĠX ) ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= ĠMath . pow ( 1 0 . 0 , Ġ 2 . 0 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( resultado Comp leto Ġ* Ġscale ). round ToInt () Ġ/ Ġscale ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġdist ancia Coord En KM ( lat 1 : ĠDouble , Ġlng 1 : ĠDouble , Ġlat 2 : ĠDouble , Ġlng 2 : ĠDouble ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠ Ġdistance Algorithm ( true , Ġlat 1 , Ġlng 1 , Ġlat 2 , Ġlng 2 ) ĊĊĊĠĠĠ Ġfun Ġdist ancia Coord En M ill as ( lat 1 : ĠDouble , Ġlng 1 : ĠDouble , Ġlat 2 : ĠDouble , Ġlng 2 : ĠDouble ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Algorithm ( false , Ġlat 1 , Ġlng 1 , Ġlat 2 , Ġlng 2 ) ĊĊĠĠĠ Ġfun Ġdist ancia Ub ic aciones En KM ( ubic acion 1 : ĠU bic acion , Ġ ubic acion 2 : ĠU bic acion ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdist ancia Coord En KM ( ubic acion 1 . get Latitude As Double (), ubic acion 1 . get Longitude As Double (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ubic acion 2 . get Latitude As Double (), ubic acion 2 . get Longitude As Double ()) ĊĊĠĠĠ Ġfun Ġdist ancia Ub ic aciones En M ill as ( ubic acion 1 : ĠU bic acion , Ġ ubic acion 2 : ĠU bic acion ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdist ancia Coord En M ill as ( ubic acion 1 . get Latitude As Double (), ubic acion 1 . get Longitude As Double (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ubic acion 2 . get Latitude As Double (), ubic acion 2 . get Longitude As Double ()) Ċ }