-
Notifications
You must be signed in to change notification settings - Fork 0
/
City.js
39 lines (35 loc) · 960 Bytes
/
City.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class City {
constructor(lat,lng) {
this.lat = lat
this.lng = lng
}
setLat(lat) {
this.lat = lat
}
setLng(lng) {
this.lng = lng
}
calculateDistance(city) {
let lat1 = this.lat
let lat2 = city.lat
let lon1 = this.lng
let lon2 = city.lng
if ((lat1 == lat2) && (lon1 == lon2)) {
return 0;
}
else {
var radlat1 = Math.PI * lat1/180;
var radlat2 = Math.PI * lat2/180;
var theta = lon1-lon2;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
if (dist > 1) {
dist = 1;
}
dist = Math.acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
return dist * 1.609344;
}
}
}