Skip to content

Instantly share code, notes, and snippets.

@michaeljforster-zz
Created December 28, 2015 15:55
Show Gist options
  • Select an option

  • Save michaeljforster-zz/45fe5351be2a4ac2c688 to your computer and use it in GitHub Desktop.

Select an option

Save michaeljforster-zz/45fe5351be2a4ac2c688 to your computer and use it in GitHub Desktop.
;;;; leaflet-quick-start.paren
;;; Map and Tile Layers
(defvar *default-lat-lng* '(51.505 -0.09))
(defvar *default-zoom* 13)
(defvar *map* (ps:chain -l (map "map") (set-view *default-lat-lng* *default-zoom*)))
(ps:chain -l
(tile-layer "http://{s}.tile.osm.org/{z}/{x}/{y}.png"
(ps:create "attribution"
"&copy; <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors"))
(add-to *map*))
;;; Markers, Circles, Polygons
(defvar *marker*
(ps:chain -l
(marker '(51.505 -0.09))
(add-to *map*)
(bind-popup "A CSS3 popup")
(open-popup)))
(defvar *circle*
(ps:chain -l
(circle '(51.508 -0.11)
500
(ps:create "color" "red"
"fillColor" "#f03"
"fillOpacity" 0.5))
(add-to *map*)))
(defvar *polygon*
(ps:chain -l
(polygon '((51.509 -0.08)
(51.503 -0.06)
(51.51 -0.047)))
(add-to *map*)))
(ps:chain *marker* (bind-popup "I'm a marker") (open-popup))
(ps:chain *circle* (bind-popup "I'm a circle"))
(ps:chain *polygon* (bind-popup "I'm a polygon"))
;;; Popups
(defvar *popup*
(ps:chain -l
(popup)
(set-lat-lng '(51.5 -0.09))
(set-content "I'm a standalone popup")
;; open-on vs add-to to automaically close when another popup is opened
(open-on *map*)))
;;; Events
(defvar *click-popup* (ps:chain -l (popup)))
(defun on-map-click (e)
;; (alert (+ "You clicked the map at" (ps:chain e latlng (to-string))))
(let ((lat-lng (ps:@ e latlng)))
(ps:chain *click-popup*
(set-lat-lng lat-lng)
(set-content (+ "You clicked the map at " (ps:chain lat-lng (to-string))))
(open-on *map*))
(ps:chain -l
(marker lat-lng)
(add-to *map*)
(bind-popup (+ "I'm at " (ps:chain lat-lng (to-string)))))))
(ps:chain *map* (on "click" #'on-map-click))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment