Authored by Justin R. Miller

fixes #110: properly query local tile sources

@@ -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 {