Геометрия. Какой-то там класс
1. Фактически, имеем кучу векторов.
2. Начало у них у всех в одной точке (текущей). Для удобства, держим ее за (0, 0)
3. Координаты ваших точек - концы векторов
4. Считаем
длину каждого вектора
//тут массив с вашими объектами
var items = [ {x: 1, y: 1},
{ x: 22, y: 0},
{ x: 2, y: 0},
{ x: 0, y: 1},
{ x: 2, y: 2},
{ x: 1, y: 2},
]
//тут будут храниться пары {объект, удаленность}
var sorteditems = [];
//получаем для каждого удаленность
items.forEach(getLength);
//сортируем по удаленности. сначала самые ближние. Если поставить {return b.len - a.len;}, то будут сначала самые дальние
var res = sorteditems.sort(function compare(a, b){return a.len - b.len;});
//фсе
console.log(res);
//вот тут описано, как получаем для каждого удаленность
function getLength(item, index, array) {
var len = Math.sqrt(Math.pow(item.x, 2) + Math.pow(item.y, 2));
sorteditems.push({item, len});
}
UPD: считать текущее положение как (0; 0) - неправильно, поскольку координаты объектов начинаются не относительно пользователя, а относительно общего нуля.
Так что корректный расчет удаленности такой:
1. Получить геопозицию смартфона X и У
2. Для каждого вашего объекта на карте, находим вектор: AB = {item.x - X; item.y - Y}.
3. А потом уже только высчитываем длину вектора АВ (как - описано выше)