Myślę, że to, co próbujesz osiągnąć, można zrobić lepiej, używając formuły Haversine w twoim SQL. Google ma samouczek, jak uzyskać najbliższe lokalizacje w bazie danych MySQL ale ogólną ideą jest ten 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;
Wtedy cała praca, którą musisz wykonać, jest wykonywana na bazie danych, więc nie musisz wciągać wszystkich firm do swojego skryptu PHP, zanim nawet sprawdzisz odległość.