0

我能做什么:获取一个 100 lat 和 lng 点的 sqlite DB,然后将这些图钉放在地图上。看起来很棒!

我想做的是在绘制地图之前获取我的位置。但似乎:

  • (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

总是在 (void)viewDidLoad 运行后触发。无论我在哪里插入它。

我需要做的是有一个启动画面,停在那里直到我得到一个位置,使用那个纬度和经度来搜索我的 sqlite DB 的位置在我这么多英里的范围内。

这是我的踪迹:

进入-[RootViewController initWithTabBar]

输入-[RootViewController viewDidLoad]

输入 -[RootViewController locationManager:didUpdateToLocation:fromLocation:]

这就是我真正想要的:

进入-[RootViewController initWithTabBar]

输入 -[RootViewController locationManager:didUpdateToLocation:fromLocation:]

输入-[RootViewController viewDidLoad]

现在我在想(使用tabbarcontroller),我是否必须以某种方式将它一直推回我的应用程序委托?冻结整个应用程序,直到我得到一个位置?这是我最近的想法。

感谢任何提示,线索,片段......!我一直在寻找几天,没有运气。

谢谢!!!!

4

1 回答 1

1

您绝对不想“冻结”应用程序,并且您肯定希望在应用程序委托的applicationDidFinishLaunching:方法中做的工作尽可能少。我可能会推荐:

  • 有两个视图:一个是带有地图的“真实”视图,(大概)由某个视图控制器控制。另一个只是一个简单的“等待”视图,带有给用户的消息和一个UIActivityIndicatorView,或类似的东西。
  • 当您的应用启动时,在您的应用窗口中加载并显示等待视图,并启动位置管理器以查找用户的当前位置。
  • 当您获得足够的位置信息后,加载真实视图,将其添加到窗口中,然后移除等待视图。(也许有一个很好的交叉淡入淡出动画或其他东西。)

您还可以添加两个视图,并在正确的时间翻转它们的hidden属性。但重点是给用户一些可看的东西,而不是试图对抗 Core Location 固有的异步特性。

于 2009-10-25T16:24:37.987 回答