1

カスタムオブジェクトにツールチップを配置する方法を見つけようとしています。特に円 (render.circle) では。

ここで例を見つけましたが、クロスブラウザーではないようです (IE 9 以降と Firefox では動作しません)。

何か案は?

$(function () { var isTouch = 'ontouchstart' in document.documentElement;

var renderer = new Highcharts.Renderer(
    $('#container')[0], 
    400,
    300
);

var tooltipOptions = Highcharts.getOptions().tooltip;

var tooltip = new Highcharts.Tooltip({
        renderer: renderer,
        plotLeft: renderer.box.clientLeft,
        plotTop: renderer.box.clientTop,
        plotWidth: renderer.box.clientWidth,
        plotHeight: renderer.box.clientHeight
    }, $.extend(tooltipOptions, {
        formatter: function() { return this.text; },
        distance: 0,
        style: $.extend(tooltipOptions.style, {
            pointerEvents: 'none'
        })
    })
 );

tooltip.onMouseOver = function () {
    var self = this._SVGElement;
    tooltip.refresh({
        getLabelConfig: function () {
            return {
                text: self.tooltip
            };
        },
        series: {},
        color: self.fill,
        tooltipPos: [
            self.x || self.cx,
            self.y || self.cy
        ]
    });
};

tooltip.onMouseOut = function () {
    tooltip.hide();
};

if (isTouch) {
    $(renderer.box).bind('click', function (e) {
        tooltip.onMouseOut();
    });
}

var circle = renderer.circle(100, 75, 40).attr({
    fill: '#7C75C5',
    stroke: 'black',
    'stroke-width': 1,
    tooltip: 'THIS IS CIRCLE.'
}).add();
circle.element._SVGElement = circle;

$(circle.element).on('mouseenter', tooltip.onMouseOver).on('mouseleave', tooltip.onMouseOut);

var rectangle = renderer.symbol('triangle-down', 50, 150, 100, 80).attr({
    fill: '#1050C5',
    stroke: 'black',
    'stroke-width': 1,
    tooltip: 'THIS IS TRIANGLE.'
}).add();
rectangle.element._SVGElement = rectangle;

$(rectangle.element).on('mouseenter', tooltip.onMouseOver).on('mouseleave', tooltip.onMouseOut);

});

4

0 に答える 0