mapbox-maps-android icon indicating copy to clipboard operation
mapbox-maps-android copied to clipboard

Pins in symbol layer flicker when we zoom out in the map, when zooming in it is fine

Open AkshatDubey10 opened this issue 1 year ago • 4 comments

Environment

  • Android OS version: 13, 14
  • Devices affected: One Plus Nord CE 2 Lite, Nothing Phone 1, etc.
  • Maps SDK Version: 11.8.1

Observed behavior and steps to reproduce

Recently we updated to latest Mapbox Version 11.8.1 from version 10.18.2, in our testing we are facing issue that the pins flicker while zooming out the map, while when zooming in the issue does not happen. This has started happening after updating the Mapbox SDK. I have attached the video for reference.

https://github.com/user-attachments/assets/3a851932-9a72-4daf-9cfc-7b18345a0375

Expected behavior

The behavior should be that it should not flicker when user is zooming out like in the previous version

Notes / preliminary analysis

Additional links and references

AkshatDubey10 avatar Dec 24 '24 05:12 AkshatDubey10

Hey @pengdev @kiryldz, could you look into the issue

AkshatDubey10 avatar Jun 19 '25 06:06 AkshatDubey10

Thanks @AkshatDubey10 for the ticket, I've created an internal ticket to investigate, will post updates when we find the root cause. In the mean time, could you share the reproduce steps, how you added these pins? It would be good to provide a minimum reproduce setup.

pengdev avatar Jun 19 '25 10:06 pengdev

symbolLayer("com.example.pins", "com.example.pins.source") {
            iconOffset(step {
                zoom()
                literal(
                    listOf(0f, 0f)
                )
                stop {
                    literal(1L)
                    literal(listOf(0f, 0f))
                }
                stop {
                    literal(10L)
                    literal(listOf(0f, -35f))
                }
            })
            iconImage(
                step {
                    zoom()
                    concat {
                        literal("pin_")
                        get("pin_type")
                        literal("_small")
                    }

                    literal(1L)
                    concat {
                        literal("pin_")
                        get("pin_type")
                        literal("_small")
                    }


                    literal(10L)
                    concat {
                        literal("pin_")
                        get("pin_type")
                        get("pin_display_state")
                        get("pin_vote_state")
                        get("pin_mute_state")
                    }

                })
            iconAllowOverlap(step {
                zoom()
                literal(false)
                stop {
                    literal(1L)
                    literal(false)
                }
                stop {
                    literal(8L)
                    literal(true)
                }
            })
            iconSize(
                interpolate {
                    exponential { literal(1.5) }
                    zoom()
                    stop {
                        literal(1.0)
                        literal(0.5)
                    }
                    stop {
                        literal(7.0)
                        literal(1.0)
                    }
                    stop {
                        literal(14.0)
                        literal(1.0)
                    }
                    stop {
                        literal(21.0)
                        literal(2.0)
                    }
                }
            )
        }

Hey @pengdev, this is the implementation which works fine on mapbox v10, but breaks on mapbox v11

AkshatDubey10 avatar Jun 20 '25 09:06 AkshatDubey10

Hi @pengdev, is there any update on this issue ?

AkshatDubey10 avatar Sep 23 '25 12:09 AkshatDubey10