Je pense que ce que vous essayez de réaliser pourrait être mieux fait en utilisant la formule Haversine dans votre SQL. Google a un tutoriel sur la façon d'obtenir les emplacements les plus proches dans une base de données MySQL mais l'idée générale est ce SQL :
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )
* cos( radians( lng ) - radians(-122) ) + sin( radians(37) )
* sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;
Ensuite, tout le travail que vous devez faire est effectué sur la base de données, vous n'avez donc pas besoin d'intégrer toutes les entreprises dans votre script PHP avant même de vérifier la distance.