我需要找到一个最近的坐标并排列最近的城市。 在控制台日志中我需要这样的:8 city, 63.50590523722971; 5城市, 76.32168761236873 我认为坐标没问题,但我如何将城市属性“city”附加到 result[i] 并用它获取。
var locationcity = [
{"city":"1 City","value":"61,90"},
{"city":"2 City","value":"34,97"},
{"city":"3 City","value":"21,63"},
{"city":"4 City","value":"19,84"},
{"city":"5 City","value":"0,81"},
{"city":"6 City","value":"6,76"},
{"city":"7 City","value":"43,64"},
{"city":"8 City","value":"18,64"},
{"city":"9 City","value":"10,61"},
]
function findClosest(locationcity){
var result = [];
for(var i=0; i < locationcity.length; i++){
for(var j = 1; j < locationcity.length-1 ; j++){
var x, y , r1 , r2;
var id = locationcity[i].id;
var coordinate_x = locationcity[i].value.split(",");
var coordinate_y = locationcity[j].value.split(",");
x = coordinate_x[0] - coordinate_y[0];
y = coordinate_x[1] - coordinate_y[1];
r1 = Math.pow(x, 2);
r2 = Math.pow(y, 2);
result[i] = Math.sqrt(r1 + r2);
}
}
var closest = result.sort();
$(closest).each(function(){
var _this = $(this);
console.log(_this);
});
}
findClosest(locationcity);
谢谢
最佳答案
排序函数可以采用可选函数作为参数: http://www.w3schools.com/jsref/jsref_sort.asp
因此,不要只存储距离,而是像这样存储城市:
result[i] = {'distance': Math.sqrt(r1 + r2), 'city': locationcity[i].city };
然后当你排序时,你提供一个排序函数:
var closest = result.sort(function (a, b) {
return a['distance'] - b['distance'];
});
关于javascript - 用javascript解析json坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324702/