To make the sprite snap to a tile -
1. Make sure the anchor on the sprite is set the same as the tile map sprite collection. i.e. if you position the sprite at (0,0,0) it should be perfectly over the the bottom left tile.
2. Work out the size of 1 tile. Vector3 tileSize = tilemap.GetTilePosition(1, 1) - tilemap.GetTilePosition(0,0);
3. You can position your sprite at any tile by either using tile map.GetTilePosition(x, y) or... you can also snap it to the closest tile by snapping it to the closest tileSize multiple, eg. if you're doing this by mouse cursor, etc.