RMMercatorToTileProjection.h
1.37 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
//
// RMTileProjection.h
// MapView
//
// Created by Joseph Gentle on 24/09/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "RMFoundation.h"
#import "RMTile.h"
#import "RMMercatorToTileProjection.h"
@class RMMercatorToScreenProjection;
// A tile projection is a projection which turns mercators into tile coordinates.
// At time of writing, read RMFractalTileProjection to see the implementation of this.
@protocol RMMercatorToTileProjection<NSObject>
-(RMTilePoint) project: (RMXYPoint)aPoint atZoom:(float)zoom;
-(RMTileRect) projectRect: (RMXYRect)aRect atZoom:(float)zoom;
-(RMTilePoint) project: (RMXYPoint)aPoint atScale:(float)scale;
-(RMTileRect) projectRect: (RMXYRect)aRect atScale:(float)scale;
// This is a helper for projectRect above. Much simpler for the caller.
-(RMTileRect) project: (RMMercatorToScreenProjection*)screen;
-(RMTile) normaliseTile: (RMTile) tile;
-(float) normaliseZoom: (float) zoom;
-(float) calculateZoomFromScale: (float) scale;
-(float) calculateNormalisedZoomFromScale: (float) scale;
-(float) calculateScaleFromZoom: (float) zoom;
// XY bounds of the earth.
@property(readonly, nonatomic) RMXYRect bounds;
// Maximum zoom for which we have tile images
@property(readonly, nonatomic) int maxZoom;
// Tile side length in pixels
@property(readonly, nonatomic) int tileSideLength;
@end