mapbox-gl-native icon indicating copy to clipboard operation
mapbox-gl-native copied to clipboard

Strange lines after zoom-in LineLayer in Android

Open kingfisherphuoc opened this issue 3 years ago • 3 comments

Platform: Android Mapbox SDK version: 9.7.1 implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.7.1'

Steps to trigger behavior

  1. Load map view async + map style

  2. Add a list of latlngs to map as Layer and Source as below:

        val features = mutableListOf<Feature>()
        var coordinateList = ArrayList<Point>()
        var index = 0
        for (item in locations) {
            coordinateList.add(
                Point.fromLngLat(
                    item.longitude,
                    item.latitude
                )
            )
    
            val properties = JsonObject()
            properties.addProperty("index", index)
            val feature =
                Feature.fromGeometry(
                    Point.fromLngLat(item.longitude, item.latitude),
                    properties
                )
            features.add(feature)
            index += 1
        }
        mapStyle!!.addSource(
            GeoJsonSource(
                "route-line-source", FeatureCollection.fromFeatures(
                    arrayOf(
                        Feature.fromGeometry(
                            MultiPoint.fromLngLats(coordinateList)
                        )
                    )
                )
            )
        )
    
        mapStyle!!.addLayer(
            LineLayer("route-line-layer", "route-line-source").withProperties(
                PropertyFactory.lineCap(Property.LINE_CAP_ROUND),
                PropertyFactory.lineJoin(Property.LINE_JOIN_ROUND),
                PropertyFactory.lineWidth(3f),
                PropertyFactory.lineColor(Color.RED)
            )
        )
    
        val fromFeatures = FeatureCollection.fromFeatures(features)
        mapStyle!!.addSource(GeoJsonSource("index-source", fromFeatures))
        val symbolLayer = SymbolLayer("index-layer", "index-source")
        symbolLayer.setProperties(
            PropertyFactory.textField(Expression.toString(Expression.get("index"))),
            PropertyFactory.textSize(MapFragment.CLUSTER_RADIUS / 2f),
            PropertyFactory.textColor(Color.RED),
            PropertyFactory.textAllowOverlap(true)
        )
        mapStyle!!.addLayer(symbolLayer)
    

Expected behavior

The line should always follow and be beneath the index numbers.

Actual behavior

It worked well if the camera zoom out < 13. However, when I tried to zoom in the map, I saw a lot of strange lines crossing near the numbers as in the image below. If I zoomed out, the strange lines disappeared.

It's very easy to reproduce. You can test it with the attached locations.json: locations.json.zip

Screenshot_20220420_001941

kingfisherphuoc avatar Apr 19 '22 17:04 kingfisherphuoc

@tobrun do you have any thought on this?

kingfisherphuoc avatar Apr 21 '22 09:04 kingfisherphuoc

any update for this issue?

kingfisherphuoc avatar May 11 '22 02:05 kingfisherphuoc

Same problem, but with polygons. This lines is everywhere! Starts with 12-13 zoom level.

BlowJohan avatar Jul 28 '22 14:07 BlowJohan