Sono abbastanza sicuro che non puoi (errare) usare gli heap per il tuo scopo. Ti suggerisco di utilizzare invece strutture di dati create appositamente per il tuo problema.
Se il tuo set di punti dati GPS cambia quasi mai, alberi KD sono probabilmente la scelta migliore per questo . Se anche i tuoi punti dati si spostano, i quad-alberi sono probabilmente i migliori. Se ti senti particolarmente algoritmico, potresti persino provare a utilizzare hashing sensibile alla località .
Se non vuoi interrogare la tua struttura dati ogni volta che cambia la tua posizione attuale, potresti invece trovare i due punti più vicini, calcolare la differenza delle distanze da te ai due punti e solo ri-interrogare i dati struttura se la posizione corrente si è spostata dalla sua posizione quando hai interrogato la struttura dati rispetto a questa differenza.
Quindi, se A e B sono i due punti più vicini (A è il più vicino) alla posizione corrente D, e quindi inizi a muoverti da D di nuovo e finisci alla posizione C, allora devi solo interrogare nuovamente la struttura se | BD | - | A-D | < = | C-D |, perché solo così ti sei allontanato abbastanza da D per ottenere un punto diverso E (potenzialmente) interessante.
Se i tuoi punti dati e la posizione corrente possono essere davvero lontani tra loro, potresti dover tenere conto dell'arrotondamento della terra. Probabilmente non devi, ma non dimenticarlo.