/
fill_missing.go
264 lines (261 loc) Β· 9.69 KB
/
fill_missing.go
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
package geoip
const defaultCountryBasedAccuracy = 200
// FillMissingInfo tries to fill missing location information based on the
// available existing information.
func (l *Location) FillMissingInfo() {
// Get coordinates from country.
if l.Coordinates.Latitude == 0 &&
l.Coordinates.Longitude == 0 &&
l.Country.ISOCode != "" {
if c, ok := countryCoordinates[l.Country.ISOCode]; ok {
l.Coordinates = c
l.Coordinates.AccuracyRadius = defaultCountryBasedAccuracy
}
}
}
var countryCoordinates = map[string]Coordinates{
"AD": {Latitude: 42, Longitude: 1},
"AE": {Latitude: 23, Longitude: 53},
"AF": {Latitude: 33, Longitude: 67},
"AG": {Latitude: 17, Longitude: -61},
"AI": {Latitude: 18, Longitude: -63},
"AL": {Latitude: 41, Longitude: 20},
"AM": {Latitude: 40, Longitude: 45},
"AN": {Latitude: 12, Longitude: -69},
"AO": {Latitude: -11, Longitude: 17},
"AQ": {Latitude: -75, Longitude: -0},
"AR": {Latitude: -38, Longitude: -63},
"AS": {Latitude: -14, Longitude: -170},
"AT": {Latitude: 47, Longitude: 14},
"AU": {Latitude: -25, Longitude: 133},
"AW": {Latitude: 12, Longitude: -69},
"AZ": {Latitude: 40, Longitude: 47},
"BA": {Latitude: 43, Longitude: 17},
"BB": {Latitude: 13, Longitude: -59},
"BD": {Latitude: 23, Longitude: 90},
"BE": {Latitude: 50, Longitude: 4},
"BF": {Latitude: 12, Longitude: -1},
"BG": {Latitude: 42, Longitude: 25},
"BH": {Latitude: 25, Longitude: 50},
"BI": {Latitude: -3, Longitude: 29},
"BJ": {Latitude: 9, Longitude: 2},
"BM": {Latitude: 32, Longitude: -64},
"BN": {Latitude: 4, Longitude: 114},
"BO": {Latitude: -16, Longitude: -63},
"BR": {Latitude: -14, Longitude: -51},
"BS": {Latitude: 25, Longitude: -77},
"BT": {Latitude: 27, Longitude: 90},
"BV": {Latitude: -54, Longitude: 3},
"BW": {Latitude: -22, Longitude: 24},
"BY": {Latitude: 53, Longitude: 27},
"BZ": {Latitude: 17, Longitude: -88},
"CA": {Latitude: 56, Longitude: -106},
"CC": {Latitude: -12, Longitude: 96},
"CD": {Latitude: -4, Longitude: 21},
"CF": {Latitude: 6, Longitude: 20},
"CG": {Latitude: -0, Longitude: 15},
"CH": {Latitude: 46, Longitude: 8},
"CI": {Latitude: 7, Longitude: -5},
"CK": {Latitude: -21, Longitude: -159},
"CL": {Latitude: -35, Longitude: -71},
"CM": {Latitude: 7, Longitude: 12},
"CN": {Latitude: 35, Longitude: 104},
"CO": {Latitude: 4, Longitude: -74},
"CR": {Latitude: 9, Longitude: -83},
"CU": {Latitude: 21, Longitude: -77},
"CV": {Latitude: 16, Longitude: -24},
"CX": {Latitude: -10, Longitude: 105},
"CY": {Latitude: 35, Longitude: 33},
"CZ": {Latitude: 49, Longitude: 15},
"DE": {Latitude: 51, Longitude: 10},
"DJ": {Latitude: 11, Longitude: 42},
"DK": {Latitude: 56, Longitude: 9},
"DM": {Latitude: 15, Longitude: -61},
"DO": {Latitude: 18, Longitude: -70},
"DZ": {Latitude: 28, Longitude: 1},
"EC": {Latitude: -1, Longitude: -78},
"EE": {Latitude: 58, Longitude: 25},
"EG": {Latitude: 26, Longitude: 30},
"EH": {Latitude: 24, Longitude: -12},
"ER": {Latitude: 15, Longitude: 39},
"ES": {Latitude: 40, Longitude: -3},
"ET": {Latitude: 9, Longitude: 40},
"FI": {Latitude: 61, Longitude: 25},
"FJ": {Latitude: -16, Longitude: 179},
"FK": {Latitude: -51, Longitude: -59},
"FM": {Latitude: 7, Longitude: 150},
"FO": {Latitude: 61, Longitude: -6},
"FR": {Latitude: 46, Longitude: 2},
"GA": {Latitude: -0, Longitude: 11},
"GB": {Latitude: 55, Longitude: -3},
"GD": {Latitude: 12, Longitude: -61},
"GE": {Latitude: 42, Longitude: 43},
"GF": {Latitude: 3, Longitude: -53},
"GG": {Latitude: 49, Longitude: -2},
"GH": {Latitude: 7, Longitude: -1},
"GI": {Latitude: 36, Longitude: -5},
"GL": {Latitude: 71, Longitude: -42},
"GM": {Latitude: 13, Longitude: -15},
"GN": {Latitude: 9, Longitude: -9},
"GP": {Latitude: 16, Longitude: -62},
"GQ": {Latitude: 1, Longitude: 10},
"GR": {Latitude: 39, Longitude: 21},
"GS": {Latitude: -54, Longitude: -36},
"GT": {Latitude: 15, Longitude: -90},
"GU": {Latitude: 13, Longitude: 144},
"GW": {Latitude: 11, Longitude: -15},
"GY": {Latitude: 4, Longitude: -58},
"GZ": {Latitude: 31, Longitude: 34},
"HK": {Latitude: 22, Longitude: 114},
"HM": {Latitude: -53, Longitude: 73},
"HN": {Latitude: 15, Longitude: -86},
"HR": {Latitude: 45, Longitude: 15},
"HT": {Latitude: 18, Longitude: -72},
"HU": {Latitude: 47, Longitude: 19},
"ID": {Latitude: -0, Longitude: 113},
"IE": {Latitude: 53, Longitude: -8},
"IL": {Latitude: 31, Longitude: 34},
"IM": {Latitude: 54, Longitude: -4},
"IN": {Latitude: 20, Longitude: 78},
"IO": {Latitude: -6, Longitude: 71},
"IQ": {Latitude: 33, Longitude: 43},
"IR": {Latitude: 32, Longitude: 53},
"IS": {Latitude: 64, Longitude: -19},
"IT": {Latitude: 41, Longitude: 12},
"JE": {Latitude: 49, Longitude: -2},
"JM": {Latitude: 18, Longitude: -77},
"JO": {Latitude: 30, Longitude: 36},
"JP": {Latitude: 36, Longitude: 138},
"KE": {Latitude: -0, Longitude: 37},
"KG": {Latitude: 41, Longitude: 74},
"KH": {Latitude: 12, Longitude: 104},
"KI": {Latitude: -3, Longitude: -168},
"KM": {Latitude: -11, Longitude: 43},
"KN": {Latitude: 17, Longitude: -62},
"KP": {Latitude: 40, Longitude: 127},
"KR": {Latitude: 35, Longitude: 127},
"KW": {Latitude: 29, Longitude: 47},
"KY": {Latitude: 19, Longitude: -80},
"KZ": {Latitude: 48, Longitude: 66},
"LA": {Latitude: 19, Longitude: 102},
"LB": {Latitude: 33, Longitude: 35},
"LC": {Latitude: 13, Longitude: -60},
"LI": {Latitude: 47, Longitude: 9},
"LK": {Latitude: 7, Longitude: 80},
"LR": {Latitude: 6, Longitude: -9},
"LS": {Latitude: -29, Longitude: 28},
"LT": {Latitude: 55, Longitude: 23},
"LU": {Latitude: 49, Longitude: 6},
"LV": {Latitude: 56, Longitude: 24},
"LY": {Latitude: 26, Longitude: 17},
"MA": {Latitude: 31, Longitude: -7},
"MC": {Latitude: 43, Longitude: 7},
"MD": {Latitude: 47, Longitude: 28},
"ME": {Latitude: 42, Longitude: 19},
"MG": {Latitude: -18, Longitude: 46},
"MH": {Latitude: 7, Longitude: 171},
"MK": {Latitude: 41, Longitude: 21},
"ML": {Latitude: 17, Longitude: -3},
"MM": {Latitude: 21, Longitude: 95},
"MN": {Latitude: 46, Longitude: 103},
"MO": {Latitude: 22, Longitude: 113},
"MP": {Latitude: 17, Longitude: 145},
"MQ": {Latitude: 14, Longitude: -61},
"MR": {Latitude: 21, Longitude: -10},
"MS": {Latitude: 16, Longitude: -62},
"MT": {Latitude: 35, Longitude: 14},
"MU": {Latitude: -20, Longitude: 57},
"MV": {Latitude: 3, Longitude: 73},
"MW": {Latitude: -13, Longitude: 34},
"MX": {Latitude: 23, Longitude: -102},
"MY": {Latitude: 4, Longitude: 101},
"MZ": {Latitude: -18, Longitude: 35},
"NA": {Latitude: -22, Longitude: 18},
"NC": {Latitude: -20, Longitude: 165},
"NE": {Latitude: 17, Longitude: 8},
"NF": {Latitude: -29, Longitude: 167},
"NG": {Latitude: 9, Longitude: 8},
"NI": {Latitude: 12, Longitude: -85},
"NL": {Latitude: 52, Longitude: 5},
"NO": {Latitude: 60, Longitude: 8},
"NP": {Latitude: 28, Longitude: 84},
"NR": {Latitude: -0, Longitude: 166},
"NU": {Latitude: -19, Longitude: -169},
"NZ": {Latitude: -40, Longitude: 174},
"OM": {Latitude: 21, Longitude: 55},
"PA": {Latitude: 8, Longitude: -80},
"PE": {Latitude: -9, Longitude: -75},
"PF": {Latitude: -17, Longitude: -149},
"PG": {Latitude: -6, Longitude: 143},
"PH": {Latitude: 12, Longitude: 121},
"PK": {Latitude: 30, Longitude: 69},
"PL": {Latitude: 51, Longitude: 19},
"PM": {Latitude: 46, Longitude: -56},
"PN": {Latitude: -24, Longitude: -127},
"PR": {Latitude: 18, Longitude: -66},
"PS": {Latitude: 31, Longitude: 35},
"PT": {Latitude: 39, Longitude: -8},
"PW": {Latitude: 7, Longitude: 134},
"PY": {Latitude: -23, Longitude: -58},
"QA": {Latitude: 25, Longitude: 51},
"RE": {Latitude: -21, Longitude: 55},
"RO": {Latitude: 45, Longitude: 24},
"RS": {Latitude: 44, Longitude: 21},
"RU": {Latitude: 61, Longitude: 105},
"RW": {Latitude: -1, Longitude: 29},
"SA": {Latitude: 23, Longitude: 45},
"SB": {Latitude: -9, Longitude: 160},
"SC": {Latitude: -4, Longitude: 55},
"SD": {Latitude: 12, Longitude: 30},
"SE": {Latitude: 60, Longitude: 18},
"SG": {Latitude: 1, Longitude: 103},
"SH": {Latitude: -24, Longitude: -10},
"SI": {Latitude: 46, Longitude: 14},
"SJ": {Latitude: 77, Longitude: 23},
"SK": {Latitude: 48, Longitude: 19},
"SL": {Latitude: 8, Longitude: -11},
"SM": {Latitude: 43, Longitude: 12},
"SN": {Latitude: 14, Longitude: -14},
"SO": {Latitude: 5, Longitude: 46},
"SR": {Latitude: 3, Longitude: -56},
"ST": {Latitude: 0, Longitude: 6},
"SV": {Latitude: 13, Longitude: -88},
"SY": {Latitude: 34, Longitude: 38},
"SZ": {Latitude: -26, Longitude: 31},
"TC": {Latitude: 21, Longitude: -71},
"TD": {Latitude: 15, Longitude: 18},
"TF": {Latitude: -49, Longitude: 69},
"TG": {Latitude: 8, Longitude: 0},
"TH": {Latitude: 15, Longitude: 100},
"TJ": {Latitude: 38, Longitude: 71},
"TK": {Latitude: -8, Longitude: -171},
"TL": {Latitude: -8, Longitude: 125},
"TM": {Latitude: 38, Longitude: 59},
"TN": {Latitude: 33, Longitude: 9},
"TO": {Latitude: -21, Longitude: -175},
"TR": {Latitude: 38, Longitude: 35},
"TT": {Latitude: 10, Longitude: -61},
"TV": {Latitude: -7, Longitude: 177},
"TW": {Latitude: 23, Longitude: 120},
"TZ": {Latitude: -6, Longitude: 34},
"UA": {Latitude: 48, Longitude: 31},
"UG": {Latitude: 1, Longitude: 32},
"US": {Latitude: 37, Longitude: -95},
"UY": {Latitude: -32, Longitude: -55},
"UZ": {Latitude: 41, Longitude: 64},
"VA": {Latitude: 41, Longitude: 12},
"VC": {Latitude: 12, Longitude: -61},
"VE": {Latitude: 6, Longitude: -66},
"VG": {Latitude: 18, Longitude: -64},
"VI": {Latitude: 18, Longitude: -64},
"VN": {Latitude: 14, Longitude: 108},
"VU": {Latitude: -15, Longitude: 166},
"WF": {Latitude: -13, Longitude: -177},
"WS": {Latitude: -13, Longitude: -172},
"XK": {Latitude: 42, Longitude: 20},
"YE": {Latitude: 15, Longitude: 48},
"YT": {Latitude: -12, Longitude: 45},
"ZA": {Latitude: -30, Longitude: 22},
"ZM": {Latitude: -13, Longitude: 27},
"ZW": {Latitude: -19, Longitude: 29},
}