重新排序<;选择>;位置列表,基于到当前GPS位置的距离


Reorder <select> list of locations, based on distance to current GPS position

我有一个网站,上面有一个包含位置列表的表单。我希望默认选择是最接近用户当前位置的位置。

我知道如何使用Javascript获取当前的GPS位置,但问题是获取位置需要一些时间,我希望表单立即显示,并在检索到位置时(或如果检索到)重新排序/选择最近的项目。

我以前从未使用过Jquery,有人能给我一些入门帮助吗?

这些位置存储在MySQL数据库中,我使用PHP来检索数据。

如果你想实现这一点,你应该遵循以下步骤:

  • 将select中包含的所有位置一起存储到数据库中他们的咕咕叫
  • 将用户位置坐标存储到会话中
  • 将数据库中的所有位置选择到阵列中,然后对其重新排序使用下面的函数(会话中的用户坐标和数据库中的每个位置坐标)
  • 显示阵列结果中的新选择

Originaly张贴在这里

var rad = function(x) {
  return x * Math.PI / 180;
};
var getDistance = function(p1, p2) {
  var R = 6378137; // Earth’s mean radius in meter
  var dLat = rad(p2.lat() - p1.lat());
  var dLong = rad(p2.lng() - p1.lng());
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) *
    Math.sin(dLong / 2) * Math.sin(dLong / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c;
  return d; // returns the distance in meter
};