geocoding fixes
This commit is contained in:
@@ -229,6 +229,54 @@ class RepresentativesController {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async geocodeAddress(req, res, next) {
|
||||
try {
|
||||
const { address } = req.body;
|
||||
const axios = require('axios');
|
||||
|
||||
console.log(`Geocoding address: ${address}`);
|
||||
|
||||
// Use Nominatim API (OpenStreetMap)
|
||||
const encodedAddress = encodeURIComponent(address);
|
||||
const url = `https://nominatim.openstreetmap.org/search?format=json&q=${encodedAddress}&limit=1&countrycodes=ca`;
|
||||
|
||||
const response = await axios.get(url, {
|
||||
headers: {
|
||||
'User-Agent': 'BNKops-Influence-Tool/1.0'
|
||||
},
|
||||
timeout: 5000
|
||||
});
|
||||
|
||||
if (response.data && response.data.length > 0 && response.data[0].lat && response.data[0].lon) {
|
||||
const result = {
|
||||
lat: parseFloat(response.data[0].lat),
|
||||
lng: parseFloat(response.data[0].lon),
|
||||
display_name: response.data[0].display_name
|
||||
};
|
||||
|
||||
console.log(`Geocoded "${address}" to:`, result);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
data: result
|
||||
});
|
||||
} else {
|
||||
console.log(`No geocoding results for: ${address}`);
|
||||
res.json({
|
||||
success: false,
|
||||
message: 'No results found for this address'
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Geocoding error:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: 'Geocoding failed',
|
||||
message: error.message
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new RepresentativesController();
|
||||
Reference in New Issue
Block a user