       {:opts default-map-opts
        :gmap nil
        :bounds nil
+       :info-window (maps/Maps.InfoWindow.)
+       :data-click-ch (chan)
        :kill-ch (chan)})
     om/IDisplayName (display-name [_] "Maps View")
     om/IDidMount

            google-map (Maps.Map. node (clj->js opts))
            bounds-changed-ch (-> (maps/listen google-map "bounds_changed")
                                  (utils/debounce 100))
            kill-ch (om/get-state owner :kill-ch)]
        (om/set-state! owner :gmap google-map)
        (go-loop []
          (let [[v ch] (alts! [kill-ch bounds-changed-ch])]

                             :properties #js {}
                             :geometry (maps/Data.Point.
                                        (maps/Maps.LatLng. (:stop/latitude data)
                                                           (:stop/longitude data)))}
       :kill-ch (chan)})
    om/IWillMount
    (will-mount [_]
      (let [{:keys [gmap
                    data-click-mult
                    info-window
                    feature-options kill-ch]} (om/get-state owner)
            data-click-tap (chan (async/sliding-buffer 5))
            feature (.. gmap -data (add feature-options))]
        (async/tap data-click-mult data-click-tap)
        (om/set-state! owner :feature feature)
        (go-loop []
          (let [[v ch] (alts! [kill-ch data-click-tap])]
            (if (= ch kill-ch)
              ::done
              (do
                (when (= (.-feature v) feature)
                  (doto info-window
                    (.setContent (html/render
                                  (html
                                   [:div.panel.panel-primary
                                    [:div.panel-heading (:stop/name data)]
                                    [:div.panel-body (pr-str data)]])))
                    (.setPosition (.. v -feature (getGeometry) (get)))
                    (.setOptions #js {:pixelOffset (maps/Maps.Size. 0 -30)})
                    (.open gmap)))
                (recur))))
          (.close info-window)
          (.. gmap -data (remove feature))
          (async/untap data-click-mult data-click-tap))))
    om/IWillUnmount
    (will-unmount [_]
      (let [{:keys [kill-ch]} (om/get-state owner)]
        (put! kill-ch (js/Date.))))
    om/IRender
    (render [_]
      (html [:noscript]))))
