OpenStreetMapsSource.m
1.46 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
//
// OpenStreetMapsSource.m
// Images
//
// Created by Joseph Gentle on 19/08/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
#import "OpenStreetMapsSource.h"
#import "Projection.h"
#import "Transform.h"
#import "TileImage.h"
#import "TileLoader.h"
#import "FractalTileProjection.h"
#import "TiledLayerController.h"
#import "TileCache.h"
@implementation OpenStreetMapsSource
-(id) init
{
if (![super init])
return nil;
// trans = [[Transform alloc] initFrom:latlong To:google];
baseURL = @"http://a.tile.openstreetmap.org/";
CGRect bounds;
bounds.origin.x = -20037508.34;
bounds.origin.y = -20037508.34;
bounds.size.width = 20037508.34 * 2;
bounds.size.height = 20037508.34 * 2;
tileProjection = [[FractalTileProjection alloc] initWithBounds:bounds TileSideLength:256 MaxZoom:18];
return self;
}
-(void) dealloc
{
[tileProjection release];
[super dealloc];
}
-(NSString*) tileURL: (Tile) tile
{
return [NSString stringWithFormat:@"http://a.tile.openstreetmap.org/%d/%d/%d.png", tile.zoom, tile.x, tile.y];
}
-(TileImage *) tileImage: (Tile)tile
{
TileImage *cachedImage = [[TileCache sharedCache] cachedImage:tile];
if (cachedImage != nil)
{
return cachedImage;
}
else
{
TileImage* image = [TileImage imageWithTile: tile FromURL:[self tileURL:tile]];
// [cache addTile:tile WithImage:image];
return image;
}
}
-(FractalTileProjection*) tileProjection
{
return [[tileProjection retain] autorelease];
}
//@synthesize cache;
@end