大多数网络和智能手机应用程序是否基于用户的纬度和经度向您显示其他用户与您的距离?也就是说,这些应用程序是否基本上从其国家/地区和邮政编码中获取用户的纬度和经度,然后使用算法创建一个排序列表,其中包含最接近它们的所有用户?我相信答案是"是的"但是我想在将此功能构建到我的Django应用程序之前确保。
对于那些不使用邮政编码的国家,我认为纬度和经度来自他们居住的城市/地区/国家/地区元组。
答案 0 :(得分:0)
是的,他们将IP映射到纬度/经度,以及纬度/长度到城市,以及城市到国家/地区,除非他们可以访问GPS设备/传感器以确切位置(+/- 1米)。
问题是,如果你有一个ip,你可以把它转换成一个数字(biginteger)
74.88.21.55 ==> (a.b.c.d) ==> d * 255^0 + c * 255^1 + b * 255^2 +a * 255^3 = x
然后你可以查询数据库 您只需要一个查找表:
T_Lookup
IP_Range_Start IP_Range_End Latitute Longitue
然后你可以像这样查询:
SELECT Latitude, Longitude FROM T_Lookup
WHERE x BETWEEN IP_Range_Start AND IP_Range_End
然后,您可以使用haversine formula计算两点之间的距离。
您可以在此处获取C代码: http://aimbots.net/tutorials/7680-getting-country-ip-address.html
你在这里找到国家csv的IP:
http://ip-to-country.webhosting.info/node/view/6
答案 1 :(得分:0)
显示用户相对于其他用户的位置的应用通常会从GPS数据或IP地址位置数据中收集数据。
This Wiki article提供了一个很好的地理定位解释。
答案 2 :(得分:0)
他们使用Galactic Coordinate系统,实际上使用经度,l和纬度,b。