我有一个地图视图,我在地图指南服务器上覆盖了切片。来自用户的每次缩放或平移操作都会调用MKTileOverlay
方法URLForTilePath
。
假设用户按3到4级放大/缩小,URLForTilePath
中的MKTileOverlay
会在每个中间缩放级别调用。由于获取图块的图像成本很高,我想避免调用叠加方法直到用户停止缩放。
我目前的想法是:
问题:
我们可以假设一起考虑一组缩放或平移动作的间隔是2秒。
每次缩放或平移regionWillChangeAnimated
/ regionDidChangeAnimated
都会被调用。我需要一种方法来执行regionDidChangeAnimated
的最后一次调用,如果它发生在2秒的空间内。
示例代码:MapViewController
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>) overlay
{
return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];;
}
- (void)addLayer:(NSString *)layer
{
Tile *overlay = [[Tile alloc] init];
overlay.canReplaceMapContent = NO;
overlay.layerName = layer;
[mapView addOverlay:overlay level:MKOverlayLevelAboveLabels];
}
示例代码:Tile
@interface Tile : MKTileOverlay
@property (nonatomic, copy) NSString *layerName;
@end
@implementation Tile
@synthesize layerName;
- (NSURL *)URLForTilePath:(MKTileOverlayPath)path
{
return [NSURL URLWithString:@"Url with tile coordinates and layerName"];
}
@end
谢谢!