相关疑难解决方法(0)

如何清除MKMapView缓存?

我正在尝试加载地图区域,并且没有在第二次或后续加载时调用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协议参考文档中找到了这些行.突出显示的行是我的问题.

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

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

objective-c mkmapview ios4

12
推荐指数
1
解决办法
2189
查看次数

并不总是调用iOS MKMapShapshotter完成块

我正在尝试使用新的iOS7 MKMapSnapshotter来生成静态地图图像.每当我的应用需要地图时,我都会调用以下内容:

MKMapSnapshotter *snapshotter = [[[MKMapSnapshotter alloc] initWithOptions:theOptions] autorelease];
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
DebugLog(@"Snapshotter allocated %@ and run on queue %@", snapshotter, aQueue);

[snapshotter startWithQueue:aQueue completionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    DebugLog(@"Snapshotter completion block %@", snapshotter);
    // perform selector on main thread to set self.imageView.image = shanpshot.image;
}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这很有效.但有时,似乎设备因地图请求而过载,然后停止渲染.在我的日志文件中,我将看到关于"已分配的Snapshotter"的第一个日志语句,但从未看到"Snapshotter完成块"消息.

是否有可能我的请求永远不会从调度队列中执行?有没有人遇到过这个问题?

mapkit grand-central-dispatch ios ios7 mkmapsnapshotter

10
推荐指数
1
解决办法
748
查看次数

清除MKMapView的瓷砖缓存?

我正在开发一款使用MKMapView作为游戏场的iPhone游戏.仅仅几分钟的播放后,该应用程序不可避免地开始变得缓慢,并最终因内存不足而崩溃.挖掘罪魁祸首似乎是地图视图不断需要更多的记忆.游戏需要对地图进行大量的缩放和平移,因此我只能假设地图的平铺缓存一直在增长,直到内存耗尽为止.有没有办法强制地图视图刷新它的磁贴缓存或包含它的内存消耗?

iphone memory-management mapkit

6
推荐指数
1
解决办法
4213
查看次数