AnsweredAssumed Answered

Unrequested tiles for non-square level of detail

Question asked by patrickhartling on Jun 20, 2013
Latest reply on Jun 26, 2013 by patrickhartling
I am making a subclass of AGSTiledLayer to act as the base layer if our app has no Internet connection. My plan is to use a single image that is part of the application bundle, and then the layer will create tiles from that image on the fly. I am using version 10.1.1-u1 on iOS 6.x.

My custom layer works fine as long as the number of rows equals the number of columns in a given level of detail. That requires the use of a square image, but I have one with an aspect ratio of 2:1 that I would like to use. For this particular image, I create the AGSLOD objects for the tileInfo property of the layer such that there are twice as many columns as rows per level of detail. However, my custom AGSTiledLayer instance receives AGSTileKey objects for only half the tiles. For example, I get the following upon initial load (sorted for readability as the order appears to vary based on threading):

AGSTileKey- level: 2, column: 0, row: 0 AGSTileKey- level: 2, column: 1, row: 0 AGSTileKey- level: 2, column: 2, row: 0 AGSTileKey- level: 2, column: 3, row: 0 AGSTileKey- level: 2, column: 0, row: 1 AGSTileKey- level: 2, column: 1, row: 1 AGSTileKey- level: 2, column: 2, row: 1 AGSTileKey- level: 2, column: 3, row: 1 AGSTileKey- level: 2, column: 0, row: 2 AGSTileKey- level: 2, column: 1, row: 2 AGSTileKey- level: 2, column: 2, row: 2 AGSTileKey- level: 2, column: 3, row: 2 AGSTileKey- level: 2, column: 0, row: 3 AGSTileKey- level: 2, column: 1, row: 3 AGSTileKey- level: 2, column: 2, row: 3 AGSTileKey- level: 2, column: 3, row: 3


From those 16 tile requests, I see the Western Hemisphere rendered at the correct aspect ratio, but the Eastern Hemisphere is not rendered at all.

The AGSLOD for level 2 was constructed with the following parameters:

AGSLOD *levelOfDetail = [[AGSLOD alloc] initWithLevel:2 resolution:resolution scale:scale]; levelOfDetail.startTileRow = 0; levelOfDetail.endTileRow = 3; levelOfDetail.startTileColumn = 0; levelOfDetail.endTileColumn = 7;


Based on that, I expect there to be 32 tiles for level 2. Is that an incorrect conclusion? My tile sizes are currently 256x256 in case that matters.

Outcomes