
14.05.2024, 01:15
|
|
Познавший АНТИЧАТ
Регистрация: 01.11.2018
Сообщений: 1,010
С нами:
3964085
Репутация:
183
|
|
JavaScript :
Код:
export
const
deg2rad
=
(
deg
)
=>
deg
*
(
Math
.
PI
/
180
)
;
export
const
getDistanceFromLatLonInKm
=
(
lat1, lon1, lat2, lon2
)
=>
{
const
R
=
6371
;
// Radius of the earth in km
const
dLat
=
deg2rad
(
lat2
-
lat1
)
;
// deg2rad below
const
dLon
=
deg2rad
(
lon2
-
lon1
)
;
const
a
=
Math
.
sin
(
dLat
/
2
)
*
Math
.
sin
(
dLat
/
2
)
+
Math
.
cos
(
deg2rad
(
lat1
)
)
*
Math
.
cos
(
deg2rad
(
lat2
)
)
*
Math
.
sin
(
dLon
/
2
)
*
Math
.
sin
(
dLon
/
2
)
;
const
c
=
2
*
Math
.
atan2
(
Math
.
sqrt
(
a
)
,
Math
.
sqrt
(
1
-
a
)
)
;
const
d
=
R
*
c
;
// Distance in km
return
d
;
}
;
export
const
fetchIpLocation
=
(
ip
)
=>
fetch
(
`http://ip-api.com/json/${ip}?fields=status,message,lat,lon&lang=ru`
)
.
then
(
(
res
)
=>
res
.
json
(
)
.
catch
(
(
)
=>
null
)
)
.
then
(
(
json
)
=>
{
if
(
null
===
json
||
json
?.
status
!==
'success'
)
return
null
;
return
json
;
}
)
;
export
const
distanceBetweenIps
=
async
(
ip1, ip2
)
=>
{
const
_ip1
=
await
fetchIpLocation
(
ip1
)
;
const
_ip2
=
await
fetchIpLocation
(
ip2
)
;
if
(
null
===
_ip1
||
null
===
_ip2
)
return
null
;
return
getDistanceFromLatLonInKm
(
_ip1
.
lat
,
_ip1
.
lon
,
_ip2
.
lat
,
_ip2
.
lon
)
;
}
;
distanceBetweenIps
(
'185.169.134.107'
,
'8.8.8.8'
)
.
then
(
console
.
log
)
;
|
|
|