/MapView/Map/RMFractalTileProjection.h
C Header | 58 lines | 14 code | 9 blank | 35 comment | 0 complexity | cea9c7aa8639b12cfc09f3cfd80d58de MD5 | raw file
1// 2// RMFractalTileProjection.h 3// 4// Copyright (c) 2008-2009, Route-Me Contributors 5// All rights reserved. 6// 7// Redistribution and use in source and binary forms, with or without 8// modification, are permitted provided that the following conditions are met: 9// 10// * Redistributions of source code must retain the above copyright notice, this 11// list of conditions and the following disclaimer. 12// * Redistributions in binary form must reproduce the above copyright notice, 13// this list of conditions and the following disclaimer in the documentation 14// and/or other materials provided with the distribution. 15// 16// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 20// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26// POSSIBILITY OF SUCH DAMAGE. 27 28#import <Foundation/Foundation.h> 29#import "RMMercatorToTileProjection.h" 30 31@class RMProjection; 32 33@interface RMFractalTileProjection : NSObject<RMMercatorToTileProjection> { 34 /// Maximum zoom for which our tile server stores images 35 NSUInteger maxZoom, minZoom; 36 37 /// projected bounds of the planet, in meters 38 RMProjectedRect planetBounds; 39 40 /// Normally 256. This class assumes tiles are square. 41 NSUInteger tileSideLength; 42 43 /// The deal is, we have a scale which stores how many mercator gradiants per pixel 44 /// in the image. 45 /// If you run the maths, scale = bounds.width/(2^zoom * tileSideLength) 46 /// or if you want, z = log(bounds.width/tileSideLength) - log(s) 47 /// So here we'll cache the first term for efficiency. 48 /// I'm using width arbitrarily - I'm not sure what the effect of using the other term is when they're not the same. 49 double scaleFactor; 50} 51 52- (id) initFromProjection:(RMProjection*)projection tileSideLength:(NSUInteger)tileSideLength maxZoom: (NSUInteger) aMaxZoom minZoom: (NSUInteger) aMinZoom; 53 54- (void) setTileSideLength: (NSUInteger) aTileSideLength; 55- (void) setMinZoom: (NSUInteger) aMinZoom; 56- (void) setMaxZoom: (NSUInteger) aMaxZoom; 57 58@end