Вы можете отследить изменение типа карты, прослушав событие "baselayerchange":
map.addEventListener('baselayerchange', () => {
// ...
})
Для обнаружения изменения масштаба прослушивание «mapviewchangeend», как и в ответе, который вы связываете, кажется правильным
map.addEventListener('mapviewchangeend', () => {
console.log(map.getZoom())
}