仅从GPS获取iPhone位置 - 而不是WiFi网络

7

我正在创建一个应用程序,它使用位置信息-

除了一件事外,一切都运作得很顺利-

当我回家时,我的iPhone连接到本地WiFi网络,而不是使用手机中的GPS获取我的位置,而是试图通过确定我的WiFi网络连接的位置来获取位置信息-如果我关闭WiFi,它会保持准确的位置点-

一旦我的手机连接到WiFi网络,它就开始告诉我我的位置距离我的实际位置几公里/英里。

我希望我的应用程序不使用WiFi网络来获取我的位置-

有没有办法- a. 告诉我是否从GPS导出了位置点,以便我可以忽略从WiFi网络派生的位置。 b. 阻止位置服务跳转到WiFi获取位置

6个回答

5

我做了一些尝试。

发现苹果的文档说[location verticalAccuracy]需要有GPS设备支持。

于是我加入了以下代码(删减版),根据我所做的有限测试,它似乎在做我想要的事情:

if (([location horizontalAccuracy] > 0) && ([location verticalAccuracy] > 0)){
     //report location here
}

感谢大家的回复。

2

除了要求用户关闭Wifi之外,目前没有记录的方法可以强制位置管理器使用GPS而非Wifi。可能存在一些私有API可以实现这个功能,但这样做会导致你的应用程序被App Store拒绝。


嘿,戴夫-谢谢你的回复-我很担心这个问题-在搜索了整个网络后我找不到任何东西-我希望有人有一种巧妙的方法可以做到不被应用商店拒绝-也许最终只能通过某种时间/距离计算来判断新位置是否不可行,但那将是一个相当糟糕的解决方案-谢谢,戴夫。 - dave

1
你可以设置 cLLocationAccuracy.desiredAccuracy = kCLLocationAccuracyBest,看看是否可以解决问题。它应该会尽量限制使用 GPS,但这并不能 100% 保证。

嘿,Jamone- 感谢你的回复- 是的,我已经将它设置为最佳,但是位置服务似乎更喜欢WiFi而不是GPS- 致敬,戴夫。 - dave

1
它在家使用WIFI的原因是因为它无法直接看到太空中的GPS卫星 - 它不会让你失去任何位置数据,而是使用下一个最好的可用来源。

0

iPhone获取不准确的GPS坐标不仅通过Wi-Fi或移动网络,还通过精度水平>100米的真实坐标。

我使用的方法是在didUpdateToLocation中的第一行放置以下代码:if (newLocation.horizontalAccuracy < 0 || newLocation.horizontalAccuracy > 50) return;以过滤不准确的坐标。

'位置年龄'即NSTimeInterval locationAge=[locTimestamp timeIntervalSinceNow];对我来说不能帮助我摆脱缓存的坐标。


-5
A-GPS = GPS + 基站三角定位。没有 WI-FI 定位。

1
嗨,阿德里安,感谢你的回复。我的iPhone在家里给出的位置与我的iPod相同,而我的iPod没有GPS或蜂窝信号。我认为我的iPhone从与我的iPod相同的地方获取位置信息。需要注意的是:我在家里没有手机信号(锡屋顶哈哈)。谢谢,戴夫。 - dave
A-GPS只是意味着可以利用蜂窝信号加速GPS锁定,它不会影响GPS的位置精度。是的,还有WiFi定位也在使用中。 - jamone
@jamone,你能定义一下WI-FI吗?请先查看一下AGPS是什么意思,别告诉我你的家庭无线路由器可以在iPhone上告诉你位置。而且是的...细胞三角定位被用来更好地定位。 - Adrian Pirvulescu
4
iPhone/iPod touch/iPad通常使用Skyhook服务,该服务可查找WiFi的MAC地址,然后查询Web服务并找出该热点的大致位置。这是通过类似于Google街景的方式来映射WiFi热点完成的。维基百科上写道,“辅助全球卫星定位系统(A-GPS)通常缩写为A-GPS,是一种可以提高GPS启动性能的系统。”它通过提供起始位置、天线数据和其他一些信息来帮助GPS更快地锁定目标。这并不意味着GPS只用于定位,而只是为了更快地启动。 - jamone
没有 Wi-Fi 定位?你喝醉了吗? - bzlm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接