I am building a store with products, whose shipping cost will depend on several variants. How do I impliment that?

The landscape supply client wants to sell supplies through thier site but the delivery charge will be based both on weight of product AND distance from their physical location that it is being delivered. Is there a way to have the customer choose a weight of the product AND a zip code to get their exact delivery charge?