add Icon.create_div

This commit is contained in:
Swrup 2022-11-24 19:21:57 +01:00
parent 57ee0a2ca8
commit 6f1e93eab6
2 changed files with 29 additions and 0 deletions

View file

@ -4,6 +4,8 @@ type t = Jv.t
let to_jv = Fun.id let to_jv = Fun.id
let of_jv = Fun.id
type opt = type opt =
| Icon_retina_url of string | Icon_retina_url of string
| Icon_size of Point.t | Icon_size of Point.t
@ -47,3 +49,21 @@ let create icon_url options =
let l = List.map (fun o -> (to_string o, opt_to_jv o)) options in let l = List.map (fun o -> (to_string o, opt_to_jv o)) options in
let l = Array.of_list @@ (("iconUrl", Jv.of_string icon_url) :: l) in let l = Array.of_list @@ (("iconUrl", Jv.of_string icon_url) :: l) in
Jv.call Global.leaflet "icon" [| Jv.obj l |] Jv.call Global.leaflet "icon" [| Jv.obj l |]
let create_div ~html ~bg_pos options =
let l = List.map (fun o -> (to_string o, opt_to_jv o)) options in
let div_options =
let html =
match html with
| None -> []
| Some html -> [ ("html", Jv.of_string html) ]
in
let bg_pos =
match bg_pos with
| None -> []
| Some bg_pos -> [ ("bgPos", Point.to_jv bg_pos) ]
in
html @ bg_pos
in
let l = Array.of_list @@ div_options @ l in
Jv.call Global.leaflet "divIcon" [| Jv.obj l |]

View file

@ -5,6 +5,9 @@ type t
(** [to_jv o] is [o] as {!Jv.t} *) (** [to_jv o] is [o] as {!Jv.t} *)
val to_jv : t -> Jv.t val to_jv : t -> Jv.t
(** [of_jv o] is [o] as {!Icon.t} *)
val of_jv : Jv.t -> t
(** type for icon option used to create an icon*) (** type for icon option used to create an icon*)
type opt = type opt =
| Icon_retina_url of string | Icon_retina_url of string
@ -22,3 +25,9 @@ type opt =
(** [create icon_url options] Creates an icon instance with the given [options], (** [create icon_url options] Creates an icon instance with the given [options],
and the required `iconUrl` option set to [icon_url] *) and the required `iconUrl` option set to [icon_url] *)
val create : string -> opt list -> t val create : string -> opt list -> t
(** [create_div ~html ~bg_pos options] Creates an DivIcon instance with the
given [options], [bg_pos] is the optional relative position of the
background, in pixels [html] is custom HTML code to put inside the div
element, empty by default. *)
val create_div : html:string option -> bg_pos:Point.t option -> opt list -> t