Я использую android mapbox, чтобы показать карту. Каждый раз, когда node
обновляется, мне нужно изменить его положение и анимировать внешний вид:
private void drawNode(Node node) {
mapboxMap.getStyle(style -> {
String layerId = "test-layer";
String sourceId = "test-source";
style.removeLayer(layerId);
style.removeSource(sourceId);
Geometry geometry = com.mapbox.geojson.Point.fromLngLat(node.getLongitude(), node.getLatitude());
style.addSource(new GeoJsonSource(sourceId, geometry));
if(style.getLayer(layerId) == null) {
PropertyValue[] values = new PropertyValue[] {
PropertyFactory.circleColor(getColor(R.color.colorAccent)),
PropertyFactory.circleRadius(0f),
PropertyFactory.circleOpacity(0.5f),
};
style.addLayer(new CircleLayer(layerId, sourceId).withProperties(values));
}
Layer layer = style.getLayer(layerId);
ValueAnimator animator = ValueAnimator.ofFloat(0f, 12f);
animator.setDuration(3000);
animator.addUpdateListener(animation -> layer.setProperties(PropertyFactory.circleRadius((float) animation.getAnimatedValue())));
animator.start();
});
}
Результат будет следующим:
Перед запуском анимации произошел сбой. Как это можно исправить?
Примечание : В конце концов решил это, добавив слой и источник с идентификатором, который отличается от предыдущего вызова метода.