_on_Area2D_body_entered(body) is a single moment whereas player movement seems to be continuous.
Maybe a better setup would be to use a bool variable like var can_walk = true, when you want the player to be able to walk, then set that bool to false when you exit the tilemap area. On the player you check that bool every frame _process(delta) to see if you can walk.
Another way to go would be using states and a finite state machine, but that depends on your needs.