Given a scenario where there are millions of potentially overlapping bounding boxes of variable sizes less the 5km in width.
Create a fast function with the arguments findIntersections(Longitude,Latitude,Radius) and the output is a list of those bounding boxes ids where each bounding box origin is inside the perimeter of the function argument dimensions.
How do I solve this problem elegantly?
This is normally done using an R-tree data structure
dbs like mysql or postgresql have GIS modules that use an r-tree under the hood to quickly retrieve locations within a certain proximity to a point on a map.
From http://en.wikipedia.org/wiki/R-tree:
The Priority R-Tree (PR-tree) is a variant that has a maximum running time of:
In practice most real-world queries will have a much quicker average case run time.
fyi, in addition to the other great code posted, there’s some cool stuff like SpatiaLite and SQLite R-tree module