@Caleb, regarding the gaps on iPad.
We were using our own implementation of a tiled map reader before (moved to tiled.lua since we found this thread…).
In both implementations there was this same issue. We have found the problem, not sure it’s been mentioned on the thread (I went through it but it’s quite long…):
The gaps appear when the tile width/height are not a multiple of display.contentScaleX/Y. And the reason is that when the tiles are converted from Corona “points” to actual device pixels there are fractions involved.
Here is an example:
- 
We are using “letterbox” mode in config.lua, this implies that display.contentScaleX and display.contentScaleY are identical so I’ll refer to their value as “content scale”.
 - 
We have a tileset with 32x32 tiles.
 - 
When the map is loaded Corona needs to convert 32x32 images to real device pixels. On iPhone 4 it’s converted to 64x64 which is nice a tidy (the content scale is 0.5).
 - 
On iPad the content scale is ~0.46. this means that after conversion to device pixels the images are 69.56. Of course device pixels are actual hardware pixels and therefore cannot be expressed with a fraction. This means Corona is forced to round it up or down which causes gaps of 1 pixel. The pattern of the gaps changes depending on the tile size and the content scale.
 
In our case we did not really care that much about the EXACT size of a tile so our solution was to slightly adjust the size Corona loads the images (we haven’t touched the actual tile size in the imagesheet) so that the size of the image in real device pixels would be a round number while in the size in Corona “points” can be a fraction
We have just added the following lines to tiled.lua:
local pixelWidth, pixelHeight = tileWidth/display.contentScaleX, tileHeight/display.contentScaleY tileWidth, tileHeight = math.floor(pixelWidth)\*display.contentScaleX, math.floor(pixelHeight)\*display.contentScaleY  
This solved the issue but made the tiles a bit larger on iPad which we don’t really mind…
Another solution would be to have a dynamic config.lua like in this post:
http://www.coronalabs.com/blog/2012/12/04/the-ultimate-config-lua-file/
In this manner you can dynamically set the content width and height (we use the default 480x320) depending on the device model or actual resolution (display.pixelWidth/Height). The idea is to modify the width and height in such a way that the content scale would device nicely with your tile size…
The downside of using this method is that your content size is not constant and it’s harder to maintain a consistant layout of the UI across different devices with different screen ratios.
PS, the problem is much more severe once you release to Android because there the fragmentation is huge and you need to be able to support a wide range of different content scales.
      
    