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