Слой mapbox minzoom / maxzoom иногда не работает - PullRequest
0 голосов
/ 27 июня 2019

у меня 3 слоя - один для кластерных точек (L1) - один, чтобы некластеризованные точки выглядели как кластеризованные (L3) - один для некластерных точек (L2)

Я установил уровни minzoom и maxzoom для слоев, чтобы: - при увеличении> 9 (далеко) появляются только L1 и L3 - при увеличении <9 (рядом) отображается только L2 </p>

Все отлично работает для L1 и L2, с переходом на уровень масштабирования. Вместо этого слой L3 всегда отображается на карте.

            GeoJsonSource source = new GeoJsonSource(
                    "sourcePoiItems",
                    featureCollection,
                    new GeoJsonOptions()
                            .withCluster(true)
                            .withClusterMaxZoom(8)
                            .withClusterRadius(15)
                            .withMinZoom(0)
                            .withMaxZoom(9)
                            .withTolerance(10));
            GeoJsonSource source2 = new GeoJsonSource(
                    "sourcePoiItems2",
                    featureCollection,
                    new GeoJsonOptions()
                            .withCluster(false)
                            .withMinZoom(9)
                            .withMaxZoom(16));
            GeoJsonSource source3 = new GeoJsonSource(
                    "sourcePoiItems3",
                    featureCollection,
                    new GeoJsonOptions()
                            .withCluster(true)
                            .withClusterMaxZoom(8)
                            .withClusterRadius(10)
                            .withMinZoom(0)
                            .withMaxZoom(9)
                            .withTolerance(10));
            mapboxMap.getStyle().addSource(source);
            mapboxMap.getStyle().addSource(source2);
            mapboxMap.getStyle().addSource(source3);
            SymbolLayer unclustered = new SymbolLayer("unclustered-points", "sourcePoiItems2");
            unclustered.setProperties(
                    PropertyFactory.iconImage(get("icon")));
            mapboxMap.getStyle().addLayer(unclustered);

            //relevant part

            CircleLayer circles = new CircleLayer("cluster-3", "sourcePoiItems3");
            circles.setProperties(
                    PropertyFactory.circleColor(layers[0][1]),
                    PropertyFactory.circleRadius(18f)
            );
            circles.setFilter(
                    not(has("point_count"))
            );
            mapboxMap.getStyle().addLayer(circles);

            SymbolLayer count1 = new SymbolLayer("count1", "sourcePoiItems3");
            count1.setProperties(
                    PropertyFactory.textField(Expression.literal("1")),
                    PropertyFactory.textSize(12f),
                    PropertyFactory.textColor(Color.WHITE),
                    PropertyFactory.textIgnorePlacement(true),
                    PropertyFactory.textAllowOverlap(true)
            );
            count1.setFilter(Expression.not(Expression.has("point_count")));
            mapboxMap.getStyle().addLayer(count1);

1 Ответ

0 голосов
/ 27 июня 2019

Можете ли вы сделать рабочий тестовый пример для того, что вы видите?

...