Playing with the MBTiles iOS example (https://github.com/mapbox/mbtiles-ios-example), I found that when scrolling horizontally on a RMMapView with a low zoom, there are some graphical glitches, like tiles that do not refresh.
See snapshot; https://img.skitch.com/20111228-x6gk8exq8dre5dnf51epmrxs3k.jpg
I wrote the example, so I'll try to help.
What "low" zoom level are you at? I have found that using a zoom level with dimensions smaller than the viewport causes issues like this. For example, on iPad, I only use a minimum of 2.5 so that the shortest dimension (768, sometimes 748 depending on orientation) still is fully filled by content.
I'm working on this right now, too. The problem seems to lie with the assumption within RMTileImageSet that only one version of a particular tile is ever seen at once - no duplicates allowed. At low zoom levels, the view can wrap around, requiring, for example, tile (0, 0), then tile (0, 1), then tile (0, 0) again. RMTileImageSet keeps a set of seen images ("images"), and addTile:At: method grabs these and positions them. This means that there can only be one version of an image at a time (the second call just moves the image associated with (0, 0) around, instead of creating another).
So, I see two solutions: Either limit the zoom so that the wrap-around never happens, or find a way to allow more than one instance of a tile to coexist.
Good lord, Route Me desperately needs a rewrite, doesn't it =)
Well when using the MBTiels Example project, zoom out and then scroll east or west, you'll end up with missing tiles.
Example here: https://img.skitch.com/20120104-qj7cahwnqiru1qen3x68e2dn16.jpg
It's true it only happens when zooming out.
"Either limit the zoom so that the wrap-around never happens" > which is annoying when you're zooming in an area between say LA and Auckland.
@gdoubleu I don't think it'd be quite that bad - we're talking about a minimum zoom of, say, 1.3 instead of 1, so you can still zoom pretty far out. Basically it'd limit the zoom to the minimum level where the whole world is in frame, with no wrap-arounds.
Actually, what I said was bollocks - to work, the zoom has to be limited so that up to 1/2 the whole world is in frame. Anything more than 1/2 and you can get up to 3 frames in shot (two of which would be duplicates).
Is this still being fixed?
The work around above isn't really working for me. For zoom 1 it only works with tiles as big as 512px, anything lower and I can't zoom far enough to only show 1/2 of my map, it will just go to zoom 2 and glitch there, like drawing (0,4) on the left then leave 2 empty rows and drawing (0,3) on the right.
The only option I see atm is just completely avoiding the zoom levels 1 to 3 or even 4 for normal sized tiles of 128px. But this is not really desired for our project..
So can you tell me if this will be fixed any time soon?
Otherwise I will try to make it so it allows the display of duplicate tiles or just learn to deal with it..
Edit: oh and btw I used an iPhone4 with a non retina device it will probably work with smaller tiles/zoom levels
I've written some code that limits the zoom level to whatever is necessary to avoid duplicate tiles (usually about 1.5), but I did so under contract, so I'm waiting for the client to agree to release it.
I had a look at allowing duplicate tiles, but it looked like a major pain in the ass, so I couldn't bring myself to go down that path yet.
Yes your right allowing duplicate tiles really looks like asking for trouble.. but I think i found a fix for the gabs in the middle of the map on zoom level 2, needs some more work and testing tho