Now with the right pin image; pin click still not working.

This commit is contained in:
Simon Brooke 2017-03-26 12:03:25 +01:00
parent 6c50592543
commit 7621040c8f
2 changed files with 28 additions and 10 deletions

View file

@ -39,6 +39,14 @@
(assoc db :page page)))
(reg-event-db
:set-address
(fn [db [_ address-id]]
(let [id (read-string address-id)
address (first (remove nil? (map #(if (= id (:id %)) %) (:addresses db))))]
(assoc (assoc db :address address) :page :electors))))
(reg-event-db
:set-elector-and-page
(fn [db [_ args]]

View file

@ -1,5 +1,5 @@
(ns youyesyet.views.map
(:require [re-frame.core :refer [reg-sub subscribe]]
(:require [re-frame.core :refer [reg-sub subscribe dispatch]]
[reagent.core :as reagent]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -55,17 +55,26 @@
(defn pin-image
"select the name of a suitable pin image for this address"
[address]
"yes-pin")
(let [intentions (set (remove nil? (map #(:intention %) (:electors address))))]
(case (count intentions)
0 "unknown-pin"
1 (str (name (first intentions)) "-pin")
"mixed-pin")))
(defn click-handler
[id]
(dispatch [:set-address id]))
(defn add-map-pin
"Add a map-pin with this pin-image at this latitude and longitude
in this map view"
[latitude longitude pin-image view]
(js/console.log (str "Adding pin " pin-image " at " latitude "," longitude))
(let [pin (.icon js/L
"Add a map-pin at this address in this map view"
[address view]
(let [lat (:latitude address)
lon (:longitude address)
pin (.icon js/L
(clj->js
{:iconUrl (str "img/map-pins/" pin-image ".png")
{:iconUrl (str "img/map-pins/" (pin-image address) ".png")
:shadowUrl "img/map-pins/shadow_pin.png"
:iconSize [32 42]
:shadowSize [57 24]
@ -73,8 +82,9 @@
:shadowAnchor [16 23]}))
marker (.marker js/L
(.latLng js/L 55.82 -4.25)
(clj->js {:icon pin}))
(clj->js {:icon pin :title (:address address)}))
]
(.on marker "click" #(fn [] (click-handler (:id address))))
(.addTo marker view)))
@ -96,7 +106,7 @@
(let [view (.setView (.map js/L "map" (clj->js {:zoomControl false})) #js [55.82 -4.25] 13)
addresses @(subscribe [:addresses])]
(js/console.log (str "Adding " (count addresses) " pins"))
(doall (map #(add-map-pin (:latitude %) (:longitude %) (pin-image %) view) addresses))
(doall (map #(add-map-pin % view) addresses))
(.addTo (.tileLayer js/L osm-url
(clj->js {:attribution osm-attrib
:maxZoom 18}))