【问题标题】:Request routing on iPhone/iPod without GPS在没有 GPS 的 iPhone/iPod 上请求路由
【发布时间】:2011-01-09 13:30:35
【问题描述】:

我想构建一个 iPhone 应用程序,该应用程序应该联系离其位置最近的服务器。 应用程序本身知道服务器的位置,它应该找出选择哪一个。

因为我预计很多用户都使用 iPod touch,所以我无法使用 GPS 来执行此操作。

在 StackOverflow 和 ServerFault 上我发现了这个可能的解决方案:

  1. 使用 Anycast 技术路由用户 => 我不能使用这种方法,因为设备本身应该路由请求并知道它们要去哪里。

  2. 获取国家代码并使用 Google Directions API 确定最近的服务器。

  3. 通过 IP(GeoDNS 等)获取位置并执行相同操作(见上文)。

方法 2 看起来不错,但我有三个问题:

  1. API 向我发送从 x 点到 z 点的整个路线。我只想保持距离。有没有办法做到这一点?

  2. Google 表示他们的使用限制为每天 2,500 个请求。他们如何控制它?通过IP?我问这个是因为他们说您不必使用 API 密钥 - 那么他们如何控制?

  3. 使用 Google 以后不会遇到任何问题是个好主意吗?我的应用程序本身将是免费的,但我将在其中包含应用内购买。这有关系吗?

我希望有人有这方面的经验。提前致谢!

保罗

【问题讨论】:

    标签: iphone api gps location


    【解决方案1】:

    在许多情况下,iOS 仍会在没有 GPS 的设备上请求时返回位置。请记住,第一代 iPhone 没有 GPS,但仍然可以提供基于位置的服务。除了 GPS,iOS 将使用多种技术(IP 地理定位、天钩等)来查找用户的位置。

    无论如何,回答你的一些问题:

    每天 2,500 个请求是每个最终用户,或者通常是每个 IP 地址。所以你不必担心被封顶。但是您应该知道,您需要显示 Google Map 才能使用 API,因此如果您使用他们的 API 而不是 mapView,您可能会遇到问题。

    我不完全确定您为什么首先需要使用 Google 路线 API。如果您可以获取用户当前位置和服务器的纬度/经度坐标,您可以使用 iOS 的内置 CoreLocation 方法来获取它们之间的距离,并据此做出决定 ([CLLocation getDistanceFromLocation]) .

    【讨论】:

    • 感谢您的回答! iPhone总是会提示“你想允许应用程序'XYZ'使用你当前的位置吗?”我说得对吗?我以前不知道该方法,所以我可以忘记 Google API。感谢那。 :)
    • 没错,从 iOS 4 开始,状态栏中会出现一个小图标,告诉用户他们的位置正在被使用。您可以使用 initWithLatitude:longitude: 方法轻松地为每个服务器创建一个 CLLocation 对象。然后,只需使用 getDistanceFromLocation 方法来确定哪个服务器最近。
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2013-01-15
    • 2018-02-23
    • 1970-01-01
    相关资源
    最近更新 更多