Penso di aver trovato una possibile soluzione, la posto comunque nel caso possa interessare a qualcuno.
Magari, vedendo la soluzione, qualcuno può consigliarmi come ottimizzarla mi farebbe un favore... anche se ancora non posso credere che una funzione del genere non sia gia implementata nelle api di google maps.

Ho risolto leggendo questo articolo:
http://blog.casertano.name/2008/10/1...ti-geografici/

Ho trasformato tutto in sql in modo da scremare nel momento della query.

A questo punto penso che andrebbe spostato nella sezione database e non php.

Comunque il codice è il seguente, i numeri inseriti sono delle coordinate di prova (41.890164,12.492346) che dovrebbero essere le coordinate che cambiano di volta in volta, mentre i campi "lon" e "lat" sono semplicemente due campi che contengono rispettivamente longitudine e latitudine di un punto registrato nel database.
Trovo tutti i punti distanti non più di 2 Km da il punto avente coordinate 41.890164,12.492346.

codice:
SELECT * FROM `shops` WHERE (ACOS(
				(SIN(RADIANS(41.890164)) * SIN(RADIANS(lat))) 
				+ 
				(COS(RADIANS(41.890164)) * COS(RADIANS(lat)))
				* 
				COS(ABS(RADIANS(12.492346) - RADIANS(lon))))
				*6372.795477598)<2