fixes #110: properly query local tile sources
Showing
1 changed file
with
13 additions
and
0 deletions
@@ -12,6 +12,8 @@ | @@ -12,6 +12,8 @@ | ||
12 | #import "RMTileSource.h" | 12 | #import "RMTileSource.h" |
13 | #import "RMTileImage.h" | 13 | #import "RMTileImage.h" |
14 | #import "RMTileCache.h" | 14 | #import "RMTileCache.h" |
15 | +#import "RMMBTilesSource.h" | ||
16 | +#import "RMDBMapSource.h" | ||
15 | 17 | ||
16 | @implementation RMMapTiledLayerView | 18 | @implementation RMMapTiledLayerView |
17 | { | 19 | { |
@@ -118,6 +120,16 @@ | @@ -118,6 +120,16 @@ | ||
118 | 120 | ||
119 | if (zoom >= _tileSource.minZoom && zoom <= _tileSource.maxZoom) | 121 | if (zoom >= _tileSource.minZoom && zoom <= _tileSource.maxZoom) |
120 | { | 122 | { |
123 | + if ([_tileSource isKindOfClass:[RMMBTilesSource class]] || [_tileSource isKindOfClass:[RMDBMapSource class]]) | ||
124 | + { | ||
125 | + // for local tiles, query the source directly since trivial blocking | ||
126 | + // | ||
127 | + tileImage = [_tileSource imageForTile:RMTileMake(x, y, zoom) inCache:[_mapView tileCache]]; | ||
128 | + } | ||
129 | + else | ||
130 | + { | ||
131 | + // for non-local tiles, consult cache directly first, else fetch asynchronously | ||
132 | + // | ||
121 | tileImage = [[_mapView tileCache] cachedImage:RMTileMake(x, y, zoom) withCacheKey:[_tileSource uniqueTilecacheKey]]; | 133 | tileImage = [[_mapView tileCache] cachedImage:RMTileMake(x, y, zoom) withCacheKey:[_tileSource uniqueTilecacheKey]]; |
122 | 134 | ||
123 | if ( ! tileImage) | 135 | if ( ! tileImage) |
@@ -134,6 +146,7 @@ | @@ -134,6 +146,7 @@ | ||
134 | }); | 146 | }); |
135 | } | 147 | } |
136 | } | 148 | } |
149 | + } | ||
137 | 150 | ||
138 | if ( ! tileImage) | 151 | if ( ! tileImage) |
139 | { | 152 | { |
-
Please register or login to post a comment