           (om/set-state! owner :google-map google-map)
           (om/set-state! owner :google-directions-service google-directions-service)
           (gen-new-renderers owner transit-journey show-vehicle-icons)
-          (gen-new-markers owner transit-journey))))
+          (gen-new-markers owner transit-journey)
+          (fit-map-to-markers (om/get-state owner :google-map) (om/get-state owner :all-markers)))))
 
     ;; recompute the route upon journey update
     om/IDidUpdate

            (remove-old-markers owner)
            (remove-old-renderers owner)
            (gen-new-renderers owner transit-journey show-vehicle-icons)
            (gen-new-markers owner transit-journey)))
        (if-not (= (-> city :city :data :center :coordinates) (-> prev-city :city :data :center :coordinates))
          (.setCenter (om/get-state owner :google-map) (geojson->goog-latlng (-> current-city :city :data :center :coordinates))))))


                        transit-journey
                        (make-transit-journey waypoints journey partial-directions)))))))))))))

(defn fit-map-to-markers [google-map markers]
  (.fitBounds
    google-map
    (reduce
      (fn [partial-bounds marker]
        (if (some? (.getPosition marker))
          (.extend
            partial-bounds
            (.getPosition marker)))
        partial-bounds)
      (js/google.maps.LatLngBounds.)
      markers)))

(def throttled-update-journey-plan (util-funcs/throttle update-journey-plan 3000))

(defn attraction-map-view [[current-city journey transit-journey show-vehicle-icons] owner]
  (reify
