Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重新订购<;选择>;位置列表,基于到当前GPS位置的距离_Php_Jquery_Mysql_Gps_Html Lists - Fatal编程技术网

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

Php 重新订购<;选择>;位置列表,基于到当前GPS位置的距离,php,jquery,mysql,gps,html-lists,Php,Jquery,Mysql,Gps,Html Lists,我有一个网站,上面有一个包含位置列表的表单。我希望默认选择是最接近用户当前位置的位置 我知道如何使用Javascript获取当前GPS位置,但问题是获取位置需要一些时间,我希望表单立即显示,并且在检索位置时(或如果检索到位置),只需重新排序/选择最近的项目 我以前从未使用过Jquery-有人能给我一些入门帮助吗 这些位置存储在MySQL数据库中,我使用PHP检索数据。如果要实现这一点,应遵循以下步骤: 将select中包含的所有位置存储到数据库中 与他们的合作 将用户位置坐标存储到会话中 将数

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

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

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


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

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

  • 将select中包含的所有位置存储到数据库中 与他们的合作
  • 将用户位置坐标存储到会话中
  • 将数据库中的所有位置选择到一个数组中,并对其重新排序 使用以下功能(会话中的用户协调和数据库中的每个位置协调)
  • 显示从数组结果中选择的新值
原创


从用户体验的角度来看,在页面加载后更改选项的顺序会非常混乱,特别是如果用户不希望这样做。^^^这一点,而且(几乎)所有列表都应该按字母顺序排列。互联网上的一致性很低,但不会让情况变得更糟。好主意,但我认为你的用户更喜欢按字母顺序排列的列表。正如@Archer所说,按字母顺序排列更有意义。您可以将距离添加到
选项的文本值中,例如
伦敦(35英里)、巴黎(120英里)
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
};