我希望使用Wi-Fi找到距离并在iPhone上绘制地图上的标记。
那么我可以得到任何想法或代码吗?
答案 0 :(得分:10)
在第一次阅读您的问题时,我假设您指的是到接入点的距离。写了一堆关于那个,我意识到你可能意味着别的东西。如果这是你的意思,继续阅读......
鉴于您的配置:
这不可能。即使您在PHY级别工作,这也是一个不可能解决的问题。为了使其更加可行,您需要triangulate接收器相对于两个(但最好是更多)基站的位置。即使然后这仍然是一个难题。 RF波以光速传播,因此使用中继技术测量往返信号传播延迟将无法提供良好的准确性(接收器必须极快地运行,然后出现multipath个问题......)。再说一遍,假设您基本上构建自己的RF硬件,显然您不打算为iPhone做这件事。
追踪基站位置的最佳选择是在更改手机位置时记录WiFi信号强度。通过'改变位置',你基本上必须扫过该区域。通过一些良好的启发式算法和处理非距离相关信号衰减的鲁棒性,您可以获得不错的精度(可能大约10米)。
答案 1 :(得分:2)
仅使用网卡的信号强度,无法获得接入点的准确距离(以米或英尺为单位)。
答案 2 :(得分:1)
使用Apple的CoreLocation框架,它可以为您提供您所在位置的坐标。我无法链接到它,因为我无法访问iPhone文档。
答案 3 :(得分:1)
在这里http://www.mathforum.com/library/drmath/view/51711.html,您可以找到用于计算GPS中两个位置之间距离的公式。这是我在此创建的C#代码(它缩放到公制系统)
private double Distance(GpsPosition p1, GpsPosition p2)
{
// http://www.mathforum.com/library/drmath/view/51711.html
double A = p1.Latitude / 57.29577951;
double B = p1.Longitude / 57.29577951;
double C = p2.Latitude / 57.29577951;
double D = p2.Longitude / 57.29577951;
if((A==C) && (B==D))
return 0;
if((Math.Sin(A)*Math.Sin(C)+Math.Cos(A)*Math.Cos(C)*Math.Cos(B-D)) > 1.0)
return 6372.72 * Math.Acos(1);
else
return 6372.72 * Math.Acos(Math.Sin(A) * Math.Sin(C) + Math.Cos(A) * Math.Cos(C) * Math.Cos(B - D));
}
答案 4 :(得分:0)
可能您可以使用3个或更多接入点获得粗略距离。现在有一种技术可以使用3个GSM移动基站获得与移动用户的距离。
答案 5 :(得分:0)
使用接收到的功率,您可以使用从发射器到接收器的射频传播模型来计算距离。但是,听起来你想要的位置,而不仅仅是距离。
自由空间路径损耗模型:
答案 6 :(得分:0)
你想在这里实现什么目标?
如果您尝试使用Iphone在地图上绘制您的位置,那么此功能已经是具有GPS接收器的Iphone的一部分,并将“开箱即用”。
如果您正在尝试使用wifi查找笔记本电脑的位置并将该位置发送到iphone,那么您有一个很难解决的问题,如果没有大量工作可能无法实现。
有一些设施可以让你从GSM桅杆上对你的位置进行三角测量,但这些设备处于固定位置,知道纬度/长度。无线接入点没有地理位置数据库,因此很难/不可能进行三角测量。
您可以使用第三方服务(例如this)使用GSM跟踪您的位置,但这些服务非常不准确,除非您在大城市并且要求您拥有GSM调制解调器,无论您正在跟踪什么。