type layer external map : string -> layer = "map" [@@bs.val] [@@bs.scope "L"] external setView : layer -> float array -> int -> unit = "setView" [@@bs.send] type event external on : layer -> string -> (event -> unit) -> unit = "on" [@@bs.send] type lat_lng = { lat : float; lng : float; } external original_event : event -> Dom.mouseEvent = "originalEvent" [@@bs.get] external lat_lng : event -> lat_lng = "latlng" [@@bs.get] external target : event -> layer = "target" [@@bs.get] external get_lat_lng : layer -> unit -> lat_lng = "getLatLng" [@@bs.send] external title_layer : string -> layer = "tileLayer" [@@bs.val] [@@bs.scope "L"] external add_layer : layer -> layer -> unit = "addLayer" [@@bs.send] external clear_layers : layer -> unit = "clearLayers" [@@bs.send] external remove : layer -> unit = "remove" [@@bs.send] external get_layers : layer -> unit -> layer array = "getLayers" [@@bs.send] (* Fit bounds *) external feature_group : layer array -> layer = "featureGroup" [@@bs.val] [@@bs.scope "L"] type bounds external get_bounds : layer -> unit -> bounds = "getBounds" [@@bs.send] type fit_bounds_options = { padding: float array } external fit_bounds : layer -> bounds -> fit_bounds_options -> unit = "fitBounds" [@@bs.send] (* Icon *) type icon type div_icon_input = { className : string ; popupAnchor : float array ; html : Dom.element } external div_icon : div_icon_input -> icon = "divIcon" [@@bs.val] [@@bs.scope "L"] (* Marker *) type markerInput = { title : string ; icon : icon ; draggable : bool } external marker : lat_lng -> markerInput -> layer = "marker" [@@bs.val] [@@bs.scope "L"]