There are multiple subspecies of elephant. The ones employed by the Carthaginians would have been native to the North African savannah and unadapted to cold.
Rome's dictator, Fabius Maximus, determined that Hannibal had more military prowess than any of their generals. This was only further proven when he crushed a field army at Canae and in subsequent years when he forced some small forces to give battle. Fabius's strategy was to not give battle, consolidate Italy, and have Hannibal's force wither away to lack of supply, and no reinforcement. This was effective. By the end of the Italian campaign, most of Hannibal's initial gains were lost. Attempts to reinforce Hannibal were defeated - and this changed the political calculus in Carthage so no more attempts at reinforcement were made. Hannibal initially persuaded many polities to side with Carthage, but with no resupply, all but the most anti-Roman either abandoned him or were taken by Rome after grinding Hannibal's army down through battles, even if the Romans were defeated. A corps of 20k veterans or so just wasn't enough to force anything decisive in Italy and that's about what Hannibal was left with in the later part of the Italian campaign.
It was the immediate threat to Carthage by Roman invasion (Scipio), not political maneuvering that caused Hannibal to depart though. Scipio defeated Carthage's armies, so the only choice they had was to recall Hannibal and hope his military genius was enough.
Hannibal wasn't dumb, but without resupply, he didn't have the means to force a decisive end to the war in Italy. The Roman leadership was competent enough to keep him from isolating Rome and preserve a fighting force strong enough to prevent him from forcing an end to conflict.