Route-me glitches with low zoom (black tiles) #158

Open
gdoubleu opened this Issue Dec 28, 2011 · 11 comments

Comments

Projects
None yet
4 participants

Hi,

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.

Contributor

incanus commented Jan 2, 2012

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.

Owner

michaeltyson commented Jan 3, 2012

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.

Owner

michaeltyson commented Jan 3, 2012

Good lord, Route Me desperately needs a rewrite, doesn't it =)

gdoubleu commented Jan 4, 2012

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.

gdoubleu commented Jan 4, 2012

"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.

Owner

michaeltyson commented Jan 4, 2012

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

Owner

michaeltyson commented Jan 4, 2012

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).

Thomm commented Jan 19, 2012

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..

Thanks

Edit: oh and btw I used an iPhone4 with a non retina device it will probably work with smaller tiles/zoom levels

Owner

michaeltyson commented Jan 19, 2012

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.

Thomm commented Jan 19, 2012

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment