Looking at the InputEvent Docs, that seems to be expected behavior. The order in which input is handed out to various nodes is as follows:
_input
Control._input_event
_unhandled_input ← your tilemap
CollisionObject._input_event ← your Area2D
If you want the Area2D to get events before the tilemap, the simple fix is to change the Area2D to use _input instead of _input_event, although depending on what else in your app listens for inputs it might get more complicated than that.
As a reminder, make sure you’re using accept_input or set_input_as_handled or whatever as appropriate if you don’t want the event to get handed out further down the list.
problem is _input() is called on all Area2D,
_input_event() is called only on the Area2Ds under your cursor.