В настоящее время я работаю над кластеризацией символов на карте Mapbox, используя метод, подобный этому официальному примеру .При тестировании я обнаружил, что значки и текст отображаются должным образом, , однако текстовый слой теряет выравнивание со слоем значков при взаимодействии с ним и поворачивает карту.
Я использую свойства PropertyFactory.iconAnchor
и PropertyFactory.iconTranslate
при создании объектов SymbolLayer
.Я пропускаю свойство, которое используется для обеспечения относительного положения этих двух слоев?
В случае, если это помогает, код, который я использую для создания SymbolLayer
объектов, выглядит следующим образом:
public List<SymbolLayer> createClusterLevelSymbolLayer(int[] layers) {
List<SymbolLayer> symbolLayers = new ArrayList<>();
for (int i = 0; i < layers.length; i++) {
SymbolLayer symbolLayer = new SymbolLayer("cluster-" + i, "points");
symbolLayer.setProperties(
iconImage("circle-15"),
iconTranslate(new Float[]{1f, 13f}),
iconSize(1.5f),
iconAnchor(Property.ICON_ANCHOR_BOTTOM)
);
Expression pointCount = toNumber(get("point_count"));
symbolLayer.setFilter(
i == 0
? all(has("point_count"),
gte(pointCount, literal(layers[i]))
) : all(has("point_count"),
gt(pointCount, literal(layers[i])),
lt(pointCount, literal(layers[i - 1]))
)
);
symbolLayers.add(symbolLayer);
}
return symbolLayers;
}
public SymbolLayer createClusterTextLayer() {
return new SymbolLayer("count", "points").withProperties(
textField(Expression.toString(get("point_count"))),
textSize(12f),
textColor(Color.BLACK),
textIgnorePlacement(true),
textAllowOverlap(true),
textAnchor(Property.TEXT_ANCHOR_BOTTOM)
);
}
Изменить (07/02/2019 @ 10:15 утра) В соответствии с рекомендацией @ riastrad, пожалуйста, найдите скриншоты поведения, которое я испытываю, ниже:
(вверху) После загрузки приложения кластерный символ выглядит очень хорошо, со значком под текстовым слоем (хорошо выровненным).
(ниже) Однако при жесте поворота карты значок и текст разделяются до тех пор, пока вид / позиция камеры не вернутся в исходную точку