Если кросс-браузерная функциональность не обязательна, то есть простое решение. В браузерах, которые поддерживают его не для элементов SVG (webkit, Mozilla и, возможно, другие, но особенно не IE), вы можете использовать свойство css под названием pointer-events . Из МДН:
"Указатель-события свойства CSS позволяет авторам контролировать, при каких обстоятельствах (если они есть) конкретный графический элемент может становиться целью событий мыши. Если это свойство не указано, те же характеристики значения visiblePainted применяются к содержимому SVG. .
В дополнение к указанию, что элемент не является целью событий мыши, значение none инструктирует событие мыши проходить «через» элемент и нацеливать все, что находится «под» этим элементом.
Предупреждение. Использование событий указателя в CSS для элементов, не относящихся к SVG, является экспериментальным. В настоящее время определено в проекте спецификации пользовательского интерфейса CSS3, есть обсуждение, чтобы отложить его до CSS4. "
По крайней мере, вы можете использовать Modernizr для обнаружения поддержки событий указателя и выполнить трюк с непрозрачностью, упомянутый в Ответ Саймона Сарриса в браузерах, которые его не поддерживают.
Кроме того, если ваше приложение относится к картам Google, вы можете вставить свой холст в качестве наложения карт Google, что позволит избежать проблемы в целом.
Пример:
http://www.patrick -wied.at / статический / heatmapjs / демо / maps_heatmap_layer / gmaps.php