【发布时间】:2014-12-28 06:18:22
【问题描述】:
我有一个不同城市的列表,我必须按离我最近的位置对其进行排序。
这里是小提琴:http://jsfiddle.net/t24g3umj/
var jsonString ='{"City A":{"Position":{"Longitude":9.96233,"Latitude":49.80404}},"City B":{"Position":{"Longitude":6.11499,"Latitude":50.76891}},"City C":{"Position":{"Longitude":6.80592,"Latitude":51.53548}},"City D":{"Position":{"Longitude":9.50523,"Latitude":51.31991}},"City E":{"Position":{"Longitude":9.66089,"Latitude":48.70158}},"City F":{"Position":{"Longitude":9.93368,"Latitude":53.55608}},"City G":{"Position":{"Longitude":11.56122,"Latitude":48.14496}},"City H":{"Position":{"Longitude":13.34253,"Latitude":52.5319}},"City I":{"Position":{"Longitude":6.11327,"Latitude":50.77715}},"City J":{"Position":{"Longitude":13.36671,"Latitude":52.54344}}}';
var myData = JSON.parse(jsonString);
$(document).ready(function () {
var distanceObj = [],
i = 0;
$.each(myData, function (a, b) {
distanceObj[i] = {
distance: hesapla(9.9608999, 49.7222842, b.Position.Longitude, b.Position.Latitude),
location: a
};
++i;
});
distanceObj.sort(function (a, b) {
return parseInt(a.distance) - parseInt(b.distance)
});
$.each(distanceObj, function (a, b) {
$('#groups').append('<li>' + b.location + ': ' + b.distance + 'm</li>');
});
console.log(distanceObj);
function hesapla(meineLongitude, meineLatitude, long1, lat1) {
erdRadius = 6371;
meineLongitude = meineLongitude * (Math.PI / 180);
meineLatitude = meineLatitude * (Math.PI / 180);
long1 = long1 * (Math.PI / 180);
lat1 = lat1 * (Math.PI / 180);
x0 = meineLongitude * erdRadius * Math.cos(meineLatitude);
y0 = meineLatitude * erdRadius;
x1 = long1 * erdRadius * Math.cos(lat1);
y1 = lat1 * erdRadius;
dx = x0 - x1;
dy = y0 - y1;
d = Math.sqrt((dx * dx) + (dy * dy));
return Math.round(d * 1000);
};
});
我想知道,如何让每个 li 元素都可以点击?
另外,第二个问题是如何将特殊城市过滤到列表顶部而不考虑距离?
在此先感谢 stackoverflow 的精彩社区。p>
【问题讨论】:
标签: javascript jquery html css json