RMAbstractMecatorWebSource.m
1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//
// RMMercatorWebSource.m
// MapView
//
// Created by Brian Knorr on 9/19/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
#import "RMAbstractMecatorWebSource.h"
#import "RMTransform.h"
#import "RMTileImage.h"
#import "RMTileLoader.h"
#import "RMFractalTileProjection.h"
#import "RMTiledLayerController.h"
#import "RMProjection.h"
@implementation RMAbstractMecatorWebSource
-(id) init
{
if (![super init])
return nil;
int sideLength = [[self class] tileSideLength];
tileProjection = [[RMFractalTileProjection alloc] initFromProjection:[self projection] tileSideLength:sideLength maxZoom:18];
return self;
}
-(void) dealloc
{
[tileProjection release];
[super dealloc];
}
+(int)tileSideLength
{
return 256;
}
-(NSString*) tileURL: (RMTile) tile
{
@throw [NSException exceptionWithName:@"RMAbstractMethodInvocation" reason:@"tileURL invoked on AbstractMercatorWebSource. Override this method when instantiating abstract class." userInfo:nil];
}
-(RMTileImage *) tileImage: (RMTile)tile
{
tile = [tileProjection normaliseTile:tile];
RMTileImage* image = [RMTileImage imageWithTile: tile FromURL:[self tileURL:tile]];
return image;
}
-(id<RMMercatorToTileProjection>) mercatorToTileProjection
{
return [[tileProjection retain] autorelease];
}
-(RMProjection*) projection
{
return [RMProjection googleProjection];
}
@end