Поверх блока с картой абсолютом спозиционировать картинку с маской. Картинку лучше сделать svg — меньше килобайт, плавные контуры при масштабировании.
Чтобы клики проходили сквозь картинку, задать ей
pointer-events: none
.
Работает уже почти везде
caniuse.com/#feat=pointer-events
Там где pointer-events не работает не делать маску. Детектится через modernizr.
Тут еще примеры
paulradzkov.com/2012/pointer-events