mapbox / mapbox-maps-ios

Interactive, thoroughly customizable maps for iOS powered by vector tiles and Metal
https://www.mapbox.com/mapbox-mobile-sdk
Other
462 stars 150 forks source link

Tiles loaded with raster shake while navigating forward. #2088

Open vqboy opened 8 months ago

vqboy commented 8 months ago

Xcode version: 14.2 iOS version: 16.6 Devices affected: All Maps SDK Version: 10.16.3~11.0.0

When using the raster method to load tiles, or when loading a normal image, during navigation in forward motion, there is a noticeable back-and-forth jitter in the tiles or images. I have tried loading different tiles and images with raster, and also switched between different versions of the SDK, but the jittering still exists. How can I resolve this issue?

In the video: From 0 to 10 seconds, there is severe shaking when turning. From 37 to 50 seconds, there is a regular back-and-forth shaking from left to right.

https://github.com/mapbox/mapbox-maps-ios/assets/16708042/91bceeaa-a3f0-43fd-b7ee-14adec2b15a8

persidskiy commented 8 months ago

@vqboy HI, do you have any minimal code-sample that reproduce the issue? Especially, the style that you use.

vqboy commented 8 months ago

@persidskiy Hello, this is the simple demo that I have organized.Please test it. This is a part extracted from the official demo. 1.Please run pod install 2.Please complete the MBXAccessToken in the Info.plist 3.After running, directly enter the simulated navigation page

The raster layer used for testing: mapbox://mapbox.terrain-rgb. I used my own simulated routing data, and during the simulated navigation, you may notice that the color blocks are shaking.

mapbox.zip

persidskiy commented 8 months ago

@vqboyHi, thank you for the example. I've played with it a little, but I can barely see the shake. Is this what you mean?

https://github.com/mapbox/mapbox-maps-ios/assets/1527181/d0bf2185-1529-44a2-abf8-fdaaadb91588

vqboy commented 8 months ago

@persidskiy Yes, this is the phenomenon I described. When the navigation speed is low and the distance traveled per second is short, it is easy to observe the back-and-forth shaking of the raster tiles. When there are other line layers drawn on top of the raster, the lines are stable. In reference to the lines, the back-and-forth shaking of the raster tiles becomes particularly obvious.

vqboy commented 8 months ago

@vqboyHi, thank you for the example. I've played with it a little, but I can barely see the shake. Is this what you mean?

Screen.Recording.2024-01-04.at.2.38.00.PM.mov

@persidskiy I apologize, but the raster tile shaking issue is quite challenging for me. Is there a better and faster solution?

I have reorganized the demo by replacing the raster tiles with locally loaded ones, and I have also drawn lines as a reference for comparison. Additionally, I have simulated a new set of routing data.

Furthermore, during real-machine testing, I noticed that the lines drawn at a distance appear to flicker in a jagged pattern when navigating forward. Is there a method to optimize this?

Below is a video demonstration and test demo that I have recorded. Before running, you only need to run pod install.

demo code: mapbox.zip

demo video: 1.In the video, in addition to the mouse position, observe the1. In the video, in addition to the mouse position, observe the entire raster tiles, especially on the right side, where there is a noticeable shaking. 2.The lines mentioned earlier that are close to the upper and distant areas will also flicker when navigating forward, which is not obvious in the video but can be easily observed during real-machine testing.

https://github.com/mapbox/mapbox-maps-ios/assets/16708042/19e51e3e-217a-4305-8207-b5cb73eea0c1