feat: The application can display all velibs near the user's location

This commit is contained in:
Louis Gallet 2023-09-02 21:17:21 +02:00
parent 2d1416cf19
commit ad31992a86
Signed by: lgallet
SSH Key Fingerprint: SHA256:qnW7pk4EoMRR0UftZLZQKSMUImbEFsiruLC7jbCHJAY
2 changed files with 13 additions and 17 deletions

View File

@ -10,8 +10,6 @@ import Foundation
var velibStations: [VelibStation] = [] var velibStations: [VelibStation] = []
import Foundation
func fetchVelibData() { func fetchVelibData() {
// L'URL de l'API Vélib // L'URL de l'API Vélib
let apiUrl = URL(string: "https://opendata.paris.fr/api/explore/v2.1/catalog/datasets/velib-disponibilite-en-temps-reel/records?select=stationcode,name,capacity,numdocksavailable,numbikesavailable,mechanical,ebike,coordonnees_geo")! let apiUrl = URL(string: "https://opendata.paris.fr/api/explore/v2.1/catalog/datasets/velib-disponibilite-en-temps-reel/records?select=stationcode,name,capacity,numdocksavailable,numbikesavailable,mechanical,ebike,coordonnees_geo")!
@ -23,13 +21,13 @@ func fetchVelibData() {
let task = session.dataTask(with: apiUrl) { (data, response, error) in let task = session.dataTask(with: apiUrl) { (data, response, error) in
// Vérifiez s'il y a des erreurs // Vérifiez s'il y a des erreurs
if let error = error { if let error = error {
print("Erreur de requête : \(error.localizedDescription)") print("Query error : \(error.localizedDescription)")
return return
} }
// Vérifiez si les données sont présentes // Vérifiez si les données sont présentes
guard let data = data else { guard let data = data else {
print("Aucune donnée reçue.") print("No data received.")
return return
} }
@ -41,9 +39,9 @@ func fetchVelibData() {
// Stockez les données dans la variable globale velibStations // Stockez les données dans la variable globale velibStations
velibStations = velibResponse.results velibStations = velibResponse.results
print("Données Vélib récupérées avec succès.") print("Vélib data successfully recovered.")
} catch { } catch {
print("Erreur lors du décodage JSON : \(error.localizedDescription)") print("Error decoding JSON : \(error.localizedDescription)")
} }
} }
@ -55,24 +53,22 @@ func fetchVelibData() {
func fetchVelibDataLocation(lon: Double, lat: Double) { func fetchVelibDataLocation(lon: Double, lat: Double) {
// L'URL de l'API Vélib // L'URL de l'API Vélib
print(lon, lat) print(lon, lat)
let longitude = String(lon).replacingOccurrences(of: ",", with: ".") let urlString = URL(string: "https://opendata.paris.fr/api/explore/v2.1/catalog/datasets/velib-disponibilite-en-temps-reel/records?select=stationcode,name,capacity,numdocksavailable,numbikesavailable,mechanical,ebike,coordonnees_geo&where=distance(coordonnees_geo,geom%27POINT(\(lon)\("%20")\(lat))%27,5km)")!
print(longitude)
let apiUrl = URL(string: "https://opendata.paris.fr/api/explore/v2.1/catalog/datasets/velib-disponibilite-en-temps-reel/records?select=stationcode,name,capacity,numdocksavailable,numbikesavailable,mechanical,ebike,coordonnees_geo&where=distance(coordonnees_geo%2C%20geom%27POINT(\(lon)%20\(lat)%27%2C%2015km)")!
// Créez une session URLSession pour effectuer la requête // Créez une session URLSession pour effectuer la requête
let session = URLSession.shared let session = URLSession.shared
// Créez la tâche de requête // Créez la tâche de requête
let task = session.dataTask(with: apiUrl) { (data, response, error) in let task = session.dataTask(with: urlString) { (data, response, error) in
// Vérifiez s'il y a des erreurs // Vérifiez s'il y a des erreurs
if let error = error { if let error = error {
print("Erreur de requête : \(error.localizedDescription)") print("Query error : \(error.localizedDescription)")
return return
} }
// Vérifiez si les données sont présentes // Vérifiez si les données sont présentes
guard let data = data else { guard let data = data else {
print("Aucune donnée reçue.") print("No data received.")
return return
} }
@ -85,9 +81,9 @@ func fetchVelibDataLocation(lon: Double, lat: Double) {
velibStations = velibResponse.results velibStations = velibResponse.results
print(velibStations) print(velibStations)
print("Données Vélib récupérées avec succès.") print("Vélib data successfully recovered.")
} catch { } catch {
print("Erreur lors du décodage JSON : \(error.localizedDescription)") print("Error decoding JSON : \(error.localizedDescription)")
} }
} }

View File

@ -14,7 +14,7 @@ struct velibtrackerApp: App {
ContentView() ContentView()
} }
} }
init() { // init() {
fetchVelibData() // fetchVelibData()
} // }
} }