RMAbstractMecatorWebSource.m
1.61 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
65
66
67
68
69
70
71
72
73
74
75
//
// 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 "RMLatLongToMercatorProjection.h"
@implementation RMAbstractMecatorWebSource
-(id) init
{
if (![super init])
return nil;
RMMercatorRect bounds;
bounds.origin.x = -20037508.34;
bounds.origin.y = -20037508.34;
bounds.size.width = 20037508.34 * 2;
bounds.size.height = 20037508.34 * 2;
int sideLength = [[self class] tileSideLength];
tileProjection = [[RMFractalTileProjection alloc] initWithBounds:bounds 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];
}
-(RMLatLongToMercatorProjection*) latLongToMercatorProjection
{
return [RMLatLongToMercatorProjection googleProjection];
}
-(RMMercatorRect) bounds
{
return [tileProjection bounds];
}
@end