In July 218 BC, as Hannibal approached the Rhone River, he learned that Scipio was ahead at Massilia. Scipio had hoped to reorganize his forces there and then march with Celtic allies to the Rhone to oppose Hannibal's crossing, but he was not ready to move his troops north. Hannibal crossed a cavalry force, which was able to scatter a small Celtic army and allow his main force to cross east.
Scipio didn't believe reports that Hannibal had crossed, assuming he would find only a small scouting force. When he discovered he was wrong, and that Hannibal was still moving his troops across the Rhone, Scipio marched north. Hannibal did consider offering battle, but decided instead to press on. Every day was a day closer to winter. He had to get over the Alps before the winter could worsen the already hazardous conditions. The arrival of Magilus, a leader of the Celtic Boii tribe, offered an alliance if Hannibal could link up with them. Hannibal concluded that if he could cross the Alps before winter, he and the Boii could move south against Rome before the Roman Senate could raise another army.
Scipio ended up returning to Italy, although most of his army went to Iberia under his brother's command. There was already an army mobilizing there, which Scipio joined.
Had Hannibal met in battle north of Massilia, he likely would have won- but the battle would have cost him men and time, two resources he would need to defeat the Allobroges tribe which refused to allow Hannibal's army into the Alps - and then the Alps themselves. Every day he delayed was another day the Romans could train and equip new soldiers, and another day the Boii grew restless. Hannibal's decision allowed him to cement his alliance with the Boii, and when he did move south his army was swelled with recruits from the Boii and other Celts they had rallied to his side.
A couple of good recent sources:
The Ghosts of Cannae: Hannibal and the Darkest Hour of the Roman Republic by Robert L. O'Connell
Hannibal’s Oath: The Life and Wars of Rome’s Greatest Enemy by John Prevas