Miasto leży pomiędzy jeziorami: Urzędowym, Miejskim Małym, Miejskim Dużym oraz największym – Rychnowskim, w odległości 136 km na południowy zachód od Gdańska.