我有3个层-一个用于聚类点(L1) -一个用于非聚类点(L3) -一个用于非聚类点(L2)
我已经设置了图层的最小缩放和最大缩放级别,以便:-当缩放>9(远)时,仅显示L1和L3 -当缩放<9(近)时,仅显示L2
所有这些都适用于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);发布于 2019-06-28 04:59:11
你能为你看到的东西做一个有效的测试用例吗?
https://stackoverflow.com/questions/56787339
复制相似问题