A partir du moment où l'on sait calculer la distance entre 2 points long/lat, le reste du problème n'est qu'une question de performance:

parcours exhaustif, tables pré-calculées, partitionnement...