如何清除MKMapView缓存?

Rah*_*rma 12 objective-c mkmapview ios4

我正在尝试加载地图区域,并且没有在第二次或后续加载时调用MKMapView委托方法.没有代表方法即

- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView;
- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView;
- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error;
Run Code Online (Sandbox Code Playgroud)

被称为.唯一的方法是

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
Run Code Online (Sandbox Code Playgroud)

似乎ios4正在缓存mapview tile图像.

我在MKMapViewDelegate协议参考文档中找到了这些行.突出显示的行是我的问题.

当加载了与当前请求关联的地图图块时,将调用此方法.当新的可见区域滚动到视图中并且图块尚不可用时,请求地图图块.对于当前不可见的地图部分,也可以请求地图图块.例如,地图视图可以根据需要加载紧邻当前可见区域的区块以处理用户的小平底锅.

我需要在加载地图后执行某些操作,但由于上述任何委托方法都没有被调用,我无法执行所需的功能.任何人都可以建议修复清除缓存或为此提供替代解决方案吗?我一直在使用中描述的方法已经尝试过在这里这个,但我仍然没能得到代码工作.

Ale*_*exB 3

我认为你可以像这样结合willStartLoadingMap,didFinishLoadingMapregionDidChange

  • 将标志willStartLoadingMap设置loading为 true;
  • didFinishLoadingMap加载设置flag为 false 并检查是否有对捕获屏幕的方法的排队调用。如果是这样,就调用它;
  • 检查regionDidChangeloading标志,如果它设置为 false,则调用捕获屏幕的方法。否则,将其排队,以便在地图加载完成时执行。

这样您就可以确保在加载图块后捕获屏幕。

但是,regionDidChange 可能会被调用多次,因此请确保仅在地图视图发生显着变化时才抓取屏幕(为此,您可以比较之前的地图区域/中心和当前地图区域/中心)。