możesz zrobić "widok" (prostokątne okienko o określonych współrzędnych, i wymiarach takich jak Canvas), i poruszać tym widokiem jak kamerą. Wtedy wykonujesz translację współrzędnych (Pseudokod):
DLA KAŻDEGO obiektu w liście obiektów:
x_rysowania = x_obiektu - x_widoku
y_rysowania = y_obiektu - y_widoku
JEŚLI obiekt znajduje się poza widokiem TO nie rysuj
JEŚLI NIE to rysuj obiekt(x_rysowania, y_rysowania)
technicznie to łapiesz odpowiednie eventy mousedown, mousemove, mouseup. W mousedown ustawiasz flagę "przeciąganie", w mouseup wyłaczasz ją. W mousemove, jeśli flaga "przeciąganie" jest ustawiona to przesuwasz okno kamery (=ustawiasz odpowiednie współrzędne widoku)