我正在尝试获取手机的当前位置,然后将坐标发送到我的网络服务器以处理数据以将一些结果返回到我的应用程序中。
我现在面临的问题是视图首先加载,然后才获得坐标。
如何首先获取坐标,以便我可以将它们发送到我的网络服务器以处理和发回数据,以便我可以显示在我的视图中?
谢谢!
我正在尝试获取手机的当前位置,然后将坐标发送到我的网络服务器以处理数据以将一些结果返回到我的应用程序中。
我现在面临的问题是视图首先加载,然后才获得坐标。
如何首先获取坐标,以便我可以将它们发送到我的网络服务器以处理和发回数据,以便我可以显示在我的视图中?
谢谢!
如果您的视图控制器在呈现之前确实需要位置信息,它可以让呈现视图控制器在转换之前执行位置服务。如果没有呈现视图控制器(即需要位置的视图控制器当前是根视图控制器),您可以引入一个新的根视图控制器,它将在转换到主视图控制器之前执行位置服务。
这个呈现视图控制器应该(根据位置感知编程指南)应该创建CLLocationManager
、启动位置服务,并且在接收到适当didUpdateLocations
的 时CLLocationManagerDelegate
,它可以停止位置服务并转换到主视图控制器。default.png
也许这个中间视图控制器还应该显示一些漂亮的“请稍候”屏幕或图像副本,UIActivityIndicatorView
同时执行定位服务。
但实际上,您不一定需要引入这个中间视图控制器。你可以用你的主视图控制器来做这一切。您可以使用异步事件驱动的编码模式。因此,您可以将 Web 服务的性能推迟到满足位置服务之后,而不是在呈现视图之前要求位置。例如,这个简单的测试项目调用位置服务,并在完成后向天气服务提交 Web 请求,并解析 JSON 响应。不需要中间视图控制器。
但是请注意,Apple 不赞成(即很可能会拒绝)仅在定位服务成功时才有效的应用程序,因此您可能需要考虑如果您的应用程序根本无法使用定位服务应该做什么。您必须优雅地处理这种情况,也许使用最后一个已知位置。
那么为什么你不能在之前的视图中找到当前位置,以便在推送到该地图位置时我们可以传递这些坐标并调用网络服务,以便我们可以显示数据,我认为然后我们会得到你想要的