我正在构建的应用程序需要我询问用户他的位置,自动完成功能,并确保他确实在附近。所以我的想法是使用Google Places Autocomplete,然后将结果返回到UITableView中。

为了确保用户在他输入的位置附近,我想将GMSCoordinatesBound设置为用户当前位置周围的某个半径。我知道如何通过CoreLocation获取用户的位置,但是我不确定如何将这些坐标转换为可以在Google Places autocompleteQuery中使用的GMSCoordinateBounds对象。有人可以给我提示吗?

谢谢!

最佳答案

首先,对可能发生的情况进行一些说明:

  • 您为自动完成功能提供的bounds将强烈偏向结果在该区域内或附近,但这不是硬性限制。即使位置在新西兰,用户仍然可以键入法郎的艾菲尔铁塔并选择法国巴黎的艾菲尔铁塔。
  • 自动填充范围是一个矩形,而不是一个圆形,因此要成为 Nerd ,您不能偏向半径。但是,一个角距中心一定距离的矩形将可以正常工作。

  • 您可以将坐标偏移固定的距离,以制作东北和西南角的新坐标,例如通过使用https://stackoverflow.com/a/7278293/806600(答案为“按x米移动CLLocation”)。

    然后,您可以使用以下代码从GMSCoordinateBounds构造一个CLLocationCoordinate2D:
    GMSCoordinateBounds *bounds =
      [[GMSCoordinateBounds alloc] initWithCoordinate:northEast
                                           coordinate:southWest];
    

    然后将其传递给autocompleteQuery

    08-28 13:42