-
Notifications
You must be signed in to change notification settings - Fork 0
/
reverseGeocoding.ts
43 lines (40 loc) · 1.68 KB
/
reverseGeocoding.ts
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
export const reverseGeocoding = async (latitude: number, longitude: number) => {
// const endpoint = "mapbox.place";
// const types = ["postcode"];
//https://api.mapbox.com/geocoding/v5/mapbox.places/42.56231,12.645763.json?types='postcode'&limit=1&country=IT&language=it&access_token=pk.eyJ1Ijoibmljb2xvbGVnYWN5IiwiYSI6ImNsOWVkaGsxZzFzdjEzd3A4eGlubDdnZ3cifQ.G9KaZlNas4WvUgnZiL-d7w
const url = `https://api.mapbox.com/geocoding/v5/mapbox.places/${latitude},${longitude}.json?limit=1&country=it&language=it&access_token=${process.env.MAPBOX_URI}`;
// return new Promise((resolve) => {
// request({ url: url, json: true }, function (error: Error, response: any) {
// if (error) {
// throw new Error("Unable to connect to Geocode API");
// } else if (response.body.features.length == 0) {
// throw new Error("this location is not supported");
// } else {
// const body = {
// center: response.body.features[0].geometry,
// city: response.body.features[0].context[1].text_it,
// postCode: response.body.features[0].context[0].text_it,
// };
// resolve(body);
// }
// });
// });
return new Promise(async (resolve, reject) => {
try {
const response = await fetch(url);
const body = await response.json();
if (body.features.length == 0) {
throw new Error("this location is not supported");
} else {
const reponse = {
center: body.features[0].geometry,
city: body.features[0].context[1].text_it,
postCode: body.features[0].context[0].text_it,
};
resolve(reponse);
}
} catch (e) {
reject(e);
}
});
};