Как получить несколько областей с помощью перетаскивания в поле выбора в HighMaps - PullRequest
0 голосов
/ 10 мая 2019

Используя HighMaps, мы пытаемся позволить пользователям выбирать несколько областей.Это прекрасно работает, если пользователь щелкает, а затем нажимает SHIFT в других областях, которые он хочет.В HighCharts мы можем использовать перетаскиваемый блок для выбора нескольких точек (как на точечной диаграмме).Я хотел бы разрешить этот аналог перетаскивания, чтобы выбрать параметр в HighMaps.Наивный пример: здесь .Это не работает.

Я думаю, что решение включает в себя то, что также используется для эффекта наведения мыши.Таким образом, когда курсор мыши входит в область, вся область подсвечивается.Если бы я мог изменить этот код в своих целях, чтобы экстент перетаскиваемого блока был бы и триггером для наведения.

chart: {
  events: {
    selection: function(event) {
      for (var i = 0; i < this.series[0].data.length; i++) {
        var point = this.series[0].data[i];
        if (point.x > event.xAxis[0].min &&
          point.x < event.xAxis[0].max &&
          point.y > event.yAxis[0].min &&
          point.y < event.yAxis[0].max) {
          point.select(true, true);
        }
      }
      return false;
    }
  },
  zoomType: 'xy'
},

1 Ответ

0 голосов
/ 13 мая 2019

Вам нужно сравнить правильные значения x и y:

events: {
    selection: function(event) {
        for (var i = 0; i < this.series[0].data.length; i++) {
            var point = this.series[0].data[i],
                xAxis = event.xAxis[0],
                yAxis = event.yAxis[0];

            if (point.graphic) {
                if (point._minX > xAxis.min &&
                    point._maxX < xAxis.max &&
                    point._minY > yAxis.min &&
                    point._maxY < yAxis.max) {

                    point.select(true, true);
                }
            }
        }
        return false;
    }
}

Демонстрационная версия: https://jsfiddle.net/BlackLabel/m4ubd0z2/

...