The calculated distance (air line) between Haddington and Bonnyrigg is approximately 14 miles respectively 22 kilometers.
By car or train, the actual journey to Bonnyrigg is certainly longer, as only the direct route (as the crow flies) between Haddington and Bonnyrigg has been calculated here.
Air line (approximately)
22 kilometers
12 nautical miles