function makeAxisPointerModel(
	        axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip
	    ) {
	        var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');
	        var volatileOption = {};

	        each(
	            [
	                'type', 'snap', 'lineStyle', 'shadowStyle', 'label',
	                'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'
	            ],
	            function (field) {
	                volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));
	            }
	        );

	        // category axis do not auto snap, otherwise some tick that do not
	        // has value can not be hovered. value/time/log axis default snap if
	        // triggered from tooltip and trigger tooltip.
	        volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;

	        // Compatibel with previous behavior, tooltip axis do not show label by default.
	        // Only these properties can be overrided from tooltip to axisPointer.
	        if (tooltipAxisPointerModel.get('type') === 'cross') {
	            volatileOption.type = 'line';
	        }
	        var labelOption = volatileOption.label || (volatileOption.label = {});
	        // Follow the convention, do not show label when triggered by tooltip by default.
	        labelOption.show == null && (labelOption.show = false);

	        if (fromTooltip === 'cross') {
	            // When 'cross', both axes show labels.
	            labelOption.show = true;
	            // If triggerTooltip, this is a base axis, which should better not use cross style
	            // (cross style is dashed by default)
	            if (!triggerTooltip) {
	                var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');
	                crossStyle && zrUtil.defaults(
	                    labelOption.textStyle || (labelOption.textStyle = {}),
	                    crossStyle.textStyle
	                );
	            }
	        }

	        return axis.model.getModel(
	            'axisPointer',
	            new Model(volatileOption, globalAxisPointerModel, ecModel)
	        );
	    }
@param {Object} opt {labelInside}
@return {Object} {
 position, rotation, labelDirection, labelOffset,
 tickDirection, labelRotate, labelInterval, z2
}