Comment get la zone la plus proche d'une list d'locations?

J'ai une API qui renvoie une list de différentes zones dans une ville avec la météo à cette zone. Je veux get la zone la plus proche en fonction de mon location actuel.

Retours d'API

  • Région
  • Latitude
  • Longitude
  • Météo

Comment find la zone la plus proche en fonction de ces données?

Vous devez créer des objects CLLocation pour toutes les zones, plus un pour l'location actuel de l'user. Ensuite, utilisez une boucle similaire à celle ci-dessous pour get l'location le plus proche:

NSArray *allLocations; // this array contains all CLLocation objects for the locations from the API you use CLLocation *currentUserLocation; CLLocation *closestLocation; CLLocationDistance closestLocationDistance = -1; for (CLLocation *location in allLocations) { if (!closestLocation) { closestLocation = location; closestLocationDistance = [currentUserLocation distanceFromLocation:location]; continue; } CLLocationDistance currentDistance = [currentUserLocation distanceFromLocation:location]; if (currentDistance < closestLocationDistance) { closestLocation = location; closestLocationDistance = currentDistance; } } 

Une chose à noter est que cette méthode de calcul d'une distance utilise une ligne directe entre le point A et le point B. Aucune route ou autre object géographique n'est pris en count.