В принципе, можно построить граф связей между точками, таким образом, что каждая точка будет связана только с ближайшими соседями. Пользователь находится ближе всего к некоторой вершине графа Р, считаем, что он привязан к ней. При каждом обновлении нужно проверить, не оказался ли пользователь ближе к какой нибудь из вершин графа, связанной с Р. В последнем случае, нужно изменить вершину привязки. Если связей между любой P и другими вершинами значительно меньше, чем число вершин, то обновлять приходится меньше.
Самым сложным видится определить, какие вершины считать «ближайшими». Можно считать ближайшими те, которые будут видны, если видна данная вершина. Плюс, можно разбить карту на направления и находить вершину с наимаеньшим расстоянием по данному направлению, если по направлению нет вершин «в зоне видимости». Но тут можно еще подумать:)
А вообще, обновлять вектор из 1500 объектов раз в секунду — не такая сложная задача. Если не требуется экномия вычислительных ресусрсов (какое-нибудь встравиваемое оборудование или работа от аккумулятора), то я бы не стал заморачиваться.