Your problem is double.
Retrieve all nodes 'near' a point.
Here MySQL queries are absolutely not the best choice. You can find example here :
So your MySQL Query would look as ugly as :
SET @lat = $lat;
SET @long = $long;
SET @radius = $radius;
SELECT
poi_id
FROM poi AS p
WHERE 6371 * 2 * ATAN2 ( SQRT ( ( SIN( ( RADIANS(p.latitude - @lat) / 2 ) * SIN( RADIANS(p.latitude - @lat) / 2 ) + COS ( RADIANS (@lat )) * COS ( RADIANS ( p.latitude ) ) * SIN ( RADIANS(p.longitude - @long) / 2 ) * SIN ( RADIANS(p.longitude - @long) / 2 ) ) ) , SQRT ( 1 - (SIN( RADIANS(p.latitude - @lat) / 2 ) * SIN( RADIANS(p.latitude - @lat) / 2 ) + COS ( RADIANS (@lat) ) * COS ( RADIANS (p.latitude) ) * SIN ( RADIANS(p.longitude - @long) / 2 ) * SIN ( RADIANS(p.longitude - @long) / 2 ) ) ) ) < @radius;
To keep Views integration, I would strongly suggest you to switch on Apache SOLR. You'll need it's 3.4 or 4 version. So you can user Apache SOLR Spatial Search ( http://wiki.apache.org/solr/SpatialSearch ). You can check out Apache SOLR / Views integration (drupal.org/project/apachesolr_views )
Your last solution is to use MongoDB which also provides a fast geospatial search. (www.mongodb.org/display/DOCS/Geospatial+Indexing )
Your views problem.
Here you can use ApacheSOLR integration or write your own handler in case of any other solution. You might also bypass views for this specific need. And write a concrete GMAP/Mongo module, for example.