you have to remember that you only had one pair - top pair isnt as strong as people think it is, certainly not with a flush draw on the table
A few people called. With 2 spades on the table there is bound to be someone hanging around chasing that final spade which mean that they could have anything. I think the guy played it well - he had 2 outs on the 3s to win the hand and 9 outs on the flush plus another 3 outs on kings to have two pair. Most good players call if they have a low pair and a flush draw
how much cash did he have - did he have more chips than you? Perhaps calling your all in didnt hurt his chip count much and gave him an opportunity to take someone else out of the game bettering his overall chances of winning.