Благодаря @WhiteHat в своем предыдущем ответе, я скорректировал свой код, чтобы использовать его с угловыми-Google-картами в угловом 1.5 компонента, это мой подход:
Радиально-Google-карты имеют некоторые directives приложить собственные события, как при наведении курсора мыши, отведении указателя мыши, готовый и т.д., пример:
<div google-chart agc-on-mouseover="$ctrl.onMouseOver(row, column)"
chart="$ctrl.data" agc-on-ready="$ctrl.onReady(chartWrapper)" agc-on-mouseout="$ctrl.onMouseOut(row, column)>
</div>
Если вы можете видеть, я добавил АРУ на готовых, АРУ на наведении курсора мыши и АРУ-на- это отведения указателя мыши директива позволяет мне присоединить свои собственные функции этих событий.
Использование @WhiteHat решения мои функции здесь:
self.onMouseOver = function (row, column) {
if (row !== null) {
var dataTable=self.chartWrapper.getDataTable();
var xPos = self.layout.getXLocation(dataTable.getValue(row, 0));
self.svgParent.appendChild(self.hoverLine);
self.hoverLine.setAttribute('x', xPos);
// This line is neccesary to move the line under the tooltip
self.svgParent.insertBefore(self.hoverLine, self.svgParent.children[4]);
}
}
self.onMouseOut = function (row, column) {
if (row !== null) {
self.svgParent.removeChild(self.hoverLine);
}
}
self.onReady = function (chartWrapper) {
// Define vars for draw vertical line on hoverLine
self.chartWrapper = chartWrapper;
// Getting container from chartWrapper.getContainerId()
var container = angular.element(chartWrapper.getContainerId());
self.svgParent = container[0].getElementsByTagName('svg')[0];
self.layout = chartWrapper.getChart().getChartLayoutInterface();
self.lineHeight = self.layout.getBoundingBox('chartarea').height - 18;
self.lineTop = self.layout.getBoundingBox('chartarea').top;
self.hoverLine = container[0].getElementsByTagName('rect')[0].cloneNode(true);
self.hoverLine.setAttribute('y', self.lineTop);
self.hoverLine.setAttribute('z', 100);
self.hoverLine.setAttribute('height', self.lineHeight);
self.hoverLine.setAttribute('width', '1');
self.hoverLine.setAttribute('stroke', 'none');
self.hoverLine.setAttribute('stroke-width', '0');
self.hoverLine.setAttribute('fill', '#cccccc');
};
Я надеюсь, что вы найдете его полезным и ваши комментарии, чтобы улучшить эту реализацию.
Я получаю сообщение об ошибке '': "Ошибка скрипта.", "Filename": "", "lineno": 0, "colno": 0', когда я навешиваю над легендой – FCin
'row' is' null', когда навешивая легенду, изменил ответ выше ... – WhiteHat