Nous faisons cela pour environ 1200 emplacements. Je voudrais juste utiliser la formule de Haversine à la volée bien que selon votre application, il pourrait être préférable de le stocker en PHP au lieu de SQL. (Notre implémentation est en .net donc votre kilométrage peut varier). Vraiment notre plus grand inconvénient avec la façon dont nous l'avons implémenté, c'est que chaque calcul (jusqu'à récemment) devait être calculé sur le niveau de données qui était douloureusement lent (quand je dis lent, je veux dire vraiment non-instantané il a fallu une seconde ou deux), mais cela était dû au fait qu'il devait calculer la distance pour tous les 1200 emplacements en fonction du code postal fourni. Selon l'itinéraire que vous choisissez, il existe des moyens d'accélérer les calculs de distance numérique, en regardant la longitude et la latitude et en supprimant celles en dehors d'une plage prédéfinie (par exemple, si vous regardez toutes les adresses dans un rayon de 20 km). miles il y a une gamme de longitude que vous pouvez calculer et que toutes les adresses doivent tomber à 20 miles de distance.) Cela peut accélérer votre requête si nécessaire.
En fait, nous avons cherché à stocker toutes les combinaisons possibles dans notre base de données. En réalité, il semble que ce pourrait être un grand magasin de données, mais ce n'est vraiment pas dans le grand champ des choses. Avec les index il peut être assez rapide, et vous n'avez pas à vous inquiéter de l'optimisation de l'algorithme, etc. Nous avons décidé contre, car nous avions l'équation en C#, et cela nous a permis de cacher les informations nécessaires pour faire tous les calculs. niveau d'entreprise. Soit fonctionnera très bien, c'est juste une question de ce que vous préférez.
Voir aussi l'amende http://www.movable-type.co.uk/scripts/latlong.html#cosine-law – Arjan