add layer

This commit is contained in:
Swrup 2022-04-08 13:21:20 +02:00
parent d99eafccbf
commit d9f25e4d8d
11 changed files with 123 additions and 35 deletions

View file

@ -1,7 +1,7 @@
(library
(name leaflet)
(public_name leaflet)
(modules ev latlng geojson_layer tile_layer popup marker map global)
(modules ev latlng geojson_layer tile_layer popup marker map global layer)
(libraries brr js_of_ocaml)
(js_of_ocaml
(javascript_files leaflet.js)))

View file

@ -1,7 +1,4 @@
(*TODO merge with TileLayer*)
type t = Jv.t
include Layer
let create ?(options = Jv.null) geojson =
Jv.call Global.leaflet "geoJSON" [| geojson; options |]
let add_to layer map = ignore @@ Jv.call layer "addTo" [| Map.to_jv_t map |]
of_jv_t @@ Jv.call Global.leaflet "geoJSON" [| geojson; options |]

View file

@ -2,4 +2,22 @@ type t
val create : ?options:Jv.t -> Jv.t -> t
val add_to : t -> Map.t -> unit
val add_to : Map.t -> t -> unit
val remove : t -> unit
val remove_from : Map.t -> t -> unit
val bind_popup : Brr.El.t -> t -> unit
val unbind_popup : t -> unit
val open_popup : t -> unit
val close_popup : t -> unit
val get_popup : t -> Popup.t
val of_jv_t : Jv.t -> t
val to_jv_t : t -> Jv.t

23
src/layer.ml Normal file
View file

@ -0,0 +1,23 @@
type t = Jv.t
let add_to map layer = ignore @@ Jv.call layer "addTo" [| Map.to_jv_t map |]
let remove layer = ignore @@ Jv.call layer "remove" [||]
let remove_from map layer =
ignore @@ Jv.call layer "removeFrom" [| Map.to_jv_t map |]
let bind_popup el layer =
ignore @@ Jv.call layer "bindPopup" [| Brr.El.to_jv el |]
let unbind_popup layer = ignore @@ Jv.call layer "unbindPopup" [||]
let open_popup layer = ignore @@ Jv.call layer "openPopup" [||]
let close_popup layer = ignore @@ Jv.call layer "closePopup" [||]
let get_popup layer = Popup.of_jv_t @@ Jv.call layer "getPopup" [||]
let of_jv_t = Fun.id
let to_jv_t = Fun.id

21
src/layer.mli Normal file
View file

@ -0,0 +1,21 @@
type t
val add_to : Map.t -> t -> unit
val remove : t -> unit
val remove_from : Map.t -> t -> unit
val bind_popup : Brr.El.t -> t -> unit
val unbind_popup : t -> unit
val open_popup : t -> unit
val close_popup : t -> unit
val get_popup : t -> Popup.t
val of_jv_t : Jv.t -> t
val to_jv_t : t -> Jv.t

View file

@ -1,11 +1,4 @@
type t = Jv.t
include Layer
let create latlng = Jv.call Global.leaflet "marker" [| Latlng.to_jv_t latlng |]
let add_to marker map = ignore @@ Jv.call marker "addTo" [| Map.to_jv_t map |]
let bind_popup el marker =
ignore @@ Jv.call marker "bindPopup" [| Brr.El.to_jv el |];
marker
let open_popup marker = ignore @@ Jv.call marker "openPopup" [||]
let create latlng =
of_jv_t @@ Jv.call Global.leaflet "marker" [| Latlng.to_jv_t latlng |]

View file

@ -2,10 +2,22 @@ type t
val create : Latlng.t -> t
val add_to : t -> Map.t -> unit
val add_to : Map.t -> t -> unit
(** {2 Popup methods} *)
val remove : t -> unit
val bind_popup : Brr.El.t -> t -> t
val remove_from : Map.t -> t -> unit
val bind_popup : Brr.El.t -> t -> unit
val unbind_popup : t -> unit
val open_popup : t -> unit
val close_popup : t -> unit
val get_popup : t -> Popup.t
val of_jv_t : Jv.t -> t
val to_jv_t : t -> Jv.t

View file

@ -1,3 +1,5 @@
type t = Jv.t
let popup = Jv.call Global.leaflet "popup" [||]
let set_latlng latlng =
@ -9,3 +11,5 @@ let set_content content =
let open_on map = ignore @@ Jv.call popup "openOn" [| Map.to_jv_t map |]
let close map = ignore @@ Jv.call (Map.to_jv_t map) "closePopup" [||]
let of_jv_t = Fun.id

View file

@ -1,3 +1,5 @@
type t
val set_latlng : Latlng.t -> unit
val set_content : string -> unit
@ -5,3 +7,5 @@ val set_content : string -> unit
val open_on : Map.t -> unit
val close : Map.t -> unit
val of_jv_t : Jv.t -> t

View file

@ -1,4 +1,4 @@
type t = Jv.t
include Layer
let create_osm ?tile_url () =
(* see https://wiki.openstreetmap.org/wiki/Tile_servers *)
@ -6,16 +6,14 @@ let create_osm ?tile_url () =
Option.fold ~some:Fun.id
~none:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" tile_url
in
Jv.call Global.leaflet "tileLayer"
[| Jv.of_string tile_url
; Jv.obj
[| ( "attribution"
, Jv.of_string
"&copy; <a \
href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> \
contributors" )
|]
|]
let add_to tile_layer map =
ignore @@ Jv.call tile_layer "addTo" [| Map.to_jv_t map |]
of_jv_t
@@ Jv.call Global.leaflet "tileLayer"
[| Jv.of_string tile_url
; Jv.obj
[| ( "attribution"
, Jv.of_string
"&copy; <a \
href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> \
contributors" )
|]
|]

View file

@ -2,4 +2,22 @@ type t
val create_osm : ?tile_url:string -> unit -> t
val add_to : t -> Map.t -> unit
val add_to : Map.t -> t -> unit
val remove : t -> unit
val remove_from : Map.t -> t -> unit
val bind_popup : Brr.El.t -> t -> unit
val unbind_popup : t -> unit
val open_popup : t -> unit
val close_popup : t -> unit
val get_popup : t -> Popup.t
val of_jv_t : Jv.t -> t
val to_jv_t : t -> Jv.t