JSXGraph. Ограниченная площадь точек

На графике есть несколько близко расположенных точек. При наведении некоторые точки подсвечиваются (это баг), но инфобокс корректно отображается для одной точки. Есть ли способы ограничить область событий?


person Nanto    schedule 12.02.2016    source источник


Ответы (1)


В JSXGraph чувствительная область элементов специально расширена, чтобы обеспечить лучшую обработку, особенно для линий. Для точек чувствительная область представляет собой четырехугольник со стороной r + 2 пикселя, где r — максимальный радиус точки (в случае формы круга). и атрибут JXG.Options.precision.hasPoint. Значение по умолчанию JXG.Options.precision.hasPoint зависит от типа устройства указателя, т. е. от мыши или сенсорного ввода. Им можно управлять, установив малые значения

JXG.Options.precision.mouse = 1; // default is 4
JXG.Options.precision.touch = 1; // default is 30

перед вызовом JXG.JSXGraph.initBoard().

Если вы хотите определить свои собственные чувствительные области, метод hasPoint можно перезаписать. Метод по умолчанию выглядит так:

JXG.Point.hasPoint = function (x, y) {
    var coordsScr = this.coords.scrCoords, r;

    r = parseFloat(this.visProp.size) +
        parseFloat(this.visProp.strokewidth) * 0.5;

    if (r < this.board.options.precision.hasPoint) {
        r = this.board.options.precision.hasPoint;
    }

    return ((Math.abs(coordsScr[1] - x) < r + 2) && 
            (Math.abs(coordsScr[2] - y) < r + 2));
};
person Alfred Wassermann    schedule 17.02.2016