add of_jv, on, ?options for bind_popup
This commit is contained in:
parent
d1ddafd945
commit
e33ad46092
2 changed files with 40 additions and 4 deletions
29
src/layer.ml
29
src/layer.ml
|
|
@ -6,6 +6,12 @@ type _ t =
|
|||
| Marker : Jv.t -> [> `Marker ] t
|
||||
| Tile : Jv.t -> [> `Tile ] t
|
||||
|
||||
type _ sub =
|
||||
| Basic : [> `Basic ] sub
|
||||
| Geojson : [> `Geojson ] sub
|
||||
| Marker : [> `Marker ] sub
|
||||
| Tile : [> `Tile ] sub
|
||||
|
||||
(** Basic layers *)
|
||||
|
||||
let add_to : type kind. Map.t -> kind t -> unit =
|
||||
|
|
@ -25,10 +31,10 @@ let remove_from : type kind. Map.t -> kind t -> unit =
|
|||
let (_ : Jv.t) = Jv.call l "removeFrom" [| Map.to_jv map |] in
|
||||
()
|
||||
|
||||
let bind_popup : type kind. Brr.El.t -> kind t -> unit =
|
||||
fun el -> function
|
||||
let bind_popup : type kind. Brr.El.t -> ?options:Jv.t -> kind t -> unit =
|
||||
fun el ?(options = Jv.null) -> function
|
||||
| Basic l | Geojson l | Marker l | Tile l ->
|
||||
let (_ : Jv.t) = Jv.call l "bindPopup" [| Brr.El.to_jv el |] in
|
||||
let (_ : Jv.t) = Jv.call l "bindPopup" [| Brr.El.to_jv el; options |] in
|
||||
()
|
||||
|
||||
let unbind_popup : type kind. kind t -> unit = function
|
||||
|
|
@ -53,6 +59,23 @@ let get_popup : type kind. kind t -> Popup.t = function
|
|||
let to_jv : type kind. kind t -> Jv.t = function
|
||||
| Basic l | Geojson l | Marker l | Tile l -> l
|
||||
|
||||
let of_jv : type kind. kind sub -> Jv.t -> kind t =
|
||||
fun tag l ->
|
||||
match tag with
|
||||
| Basic -> Basic l
|
||||
| Geojson -> Geojson l
|
||||
| Marker -> Marker l
|
||||
| Tile -> Tile l
|
||||
|
||||
let on : type kind. kind Event.sub -> (kind Event.t -> 'b) -> 'c t -> unit =
|
||||
fun event handler layer ->
|
||||
let name = Event.sub_to_string event in
|
||||
let handler v = handler @@ Event.of_jv event v in
|
||||
let (_ : Jv.t) =
|
||||
Jv.call (to_jv layer) "on" [| Jv.of_string name; Jv.repr handler |]
|
||||
in
|
||||
()
|
||||
|
||||
(** Geojson layers *)
|
||||
|
||||
let create_geojson : ?options:Jv.t -> Jv.t -> [ `Geojson ] t =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue