Unfortunately, maths was never my strong point and I'm struggling with the best approach/formula to do the following (which I will then need to turn in to PHP code):
1). Start with a single large area (e.g. covering all of Europe)
2). Break this area down in to a series of smaller blocks (i.e. turn it into a grid of sorts)
3). Each grid block should have a width that roughly corresponds to a distance of 75km (taking into account the curvature of the earth).
4). Calculate the central lat/long point of each grid block
5). For each grid block's central point, run a search against a separate database of lat/long points (representing places of interest) to find a maximum of 5 closest points of interest to each grid block. The furthest point of interest must be no more than 150km away from the centre of the grid block.
Once all the above is done, I should end up with a database of grid blocks and their corresponding 5 closest places of interest.
My hope is that I should then be able take any random lat/long point and calculate (using an efficient math formula) which pre-computed grid block it falls within and thus be able to immediately return the 5 closest points of interest without having to do any expensive computing.
[ note: edited for clarity based on High Performance Mark's helpful response below ]