sig
  type overlay_type =
      [ `_class
      | `bubble
      | `circle
      | `default
      | `group
      | `line
      | `none
      | `polygon
      | `route
      | `scale ]
  type overlay
  type zoom_mode = [ `auto_fill | `auto_fit | `last | `manual ]
  type overlay_get_cb = Evas.obj -> Elm_map.overlay -> unit
  type route
  type source_type = [ `last | `name | `route | `tile ]
  type route_type = [ `bicycle | `foot | `last | `motocar ]
  type route_method = [ `fastest | `last | `shortest ]
  type route_cb = Evas.obj -> Elm_map.route -> unit
  type name
  type name_cb = Evas.obj -> Elm_map.name -> unit
  type name_method = [ `last | `reverse | `search ]
  val add : Evas.obj -> Evas.obj
  val addx : Elm_object.t_addx
  val zoom_set : Evas.obj -> int -> unit
  val zoom_get : Evas.obj -> int
  val zoom_mode_set : Evas.obj -> Elm_map.zoom_mode -> unit
  val zoom_mode_get : Evas.obj -> Elm_map.zoom_mode
  val zoom_min_set : Evas.obj -> int -> unit
  val zoom_min_get : Evas.obj -> int
  val zoom_max_set : Evas.obj -> int -> unit
  val zoom_max_get : Evas.obj -> int
  val region_get : Evas.obj -> float * float
  val region_bring_in : Evas.obj -> float -> float -> unit
  val region_show : Evas.obj -> float -> float -> unit
  val canvas_to_region_convert : Evas.obj -> int -> int -> float * float
  val region_to_canvas_convert : Evas.obj -> float -> float -> int * int
  val paused_set : Evas.obj -> bool -> unit
  val paused_get : Evas.obj -> bool
  val rotate_set : Evas.obj -> float -> int -> int -> unit
  val rotate_get : Evas.obj -> float * int * int
  val wheel_disabled_set : Evas.obj -> bool -> unit
  val wheel_disabled_get : Evas.obj -> bool
  val user_agent_set : Evas.obj -> string -> unit
  val user_agent_get : Evas.obj -> string
  val overlay_add : Evas.obj -> float -> float -> Elm_map.overlay
  val overlays_get : Evas.obj -> Elm_map.overlay list
  val overlay_del : Elm_map.overlay -> unit
  val overlay_type_get : Elm_map.overlay -> Elm_map.overlay_type
  val overlay_hide_set : Elm_map.overlay -> bool -> unit
  val overlay_hide_get : Elm_map.overlay -> bool
  val overlay_displayed_zoom_min_set : Elm_map.overlay -> int -> unit
  val overlay_displayed_zoom_min_get : Elm_map.overlay -> int
  val overlay_paused_set : Elm_map.overlay -> bool -> unit
  val overlay_paused_get : Elm_map.overlay -> bool
  val overlay_visible_get : Elm_map.overlay -> bool
  val overlay_content_set : Elm_map.overlay -> Evas.obj option -> unit
  val overlay_content_get : Elm_map.overlay -> Evas.obj option
  val overlay_icon_set : Elm_map.overlay -> Evas.obj option -> unit
  val overlay_icon_get : Elm_map.overlay -> Evas.obj option
  val overlay_region_set : Elm_map.overlay -> float -> float -> unit
  val overlay_region_get : Elm_map.overlay -> float * float
  val overlay_color_set : Elm_map.overlay -> int -> int -> int -> int -> unit
  val overlay_color_get : Elm_map.overlay -> int * int * int * int
  val overlay_show : Elm_map.overlay -> unit
  val overlays_show : Elm_map.overlay list -> unit
  val overlay_get_cb_set : Elm_map.overlay -> Elm_map.overlay_get_cb -> unit
  val overlay_class_add : Evas.obj -> Elm_map.overlay
  val overlay_class_append : Elm_map.overlay -> Elm_map.overlay -> unit
  val overlay_class_remove : Elm_map.overlay -> Elm_map.overlay -> unit
  val overlay_class_zoom_max_set : Elm_map.overlay -> int -> unit
  val overlay_class_zoom_max_get : Elm_map.overlay -> int
  val overlay_group_members_get : Elm_map.overlay -> Elm_map.overlay list
  val overlay_bubble_add : Evas.obj -> Elm_map.overlay
  val overlay_bubble_follow : Elm_map.overlay -> Elm_map.overlay -> unit
  val overlay_bubble_content_append : Elm_map.overlay -> Evas.obj -> unit
  val overlay_bubble_content_clear : Elm_map.overlay -> unit
  val overlay_route_add : Evas.obj -> Elm_map.route -> Elm_map.overlay
  val overlay_line_add :
    Evas.obj -> float -> float -> float -> float -> Elm_map.overlay
  val overlay_polygon_add : Evas.obj -> Elm_map.overlay
  val overlay_polygon_region_add : Elm_map.overlay -> float -> float -> unit
  val overlay_circle_add :
    Evas.obj -> float -> float -> float -> Elm_map.overlay
  val overlay_scale_add : Evas.obj -> int -> int -> Elm_map.overlay
  val tile_load_status_get : Evas.obj -> int * int
  val sources_get : Evas.obj -> Elm_map.source_type -> string list
  val source_set : Evas.obj -> Elm_map.source_type -> string -> unit
  val source_get : Evas.obj -> Elm_map.source_type -> string
  val route_add :
    Evas.obj ->
    Elm_map.route_type ->
    Elm_map.route_method ->
    float -> float -> float -> float -> Elm_map.route_cb -> Elm_map.route
  val route_del : Elm_map.route -> unit
  val route_distance_get : Elm_map.route -> float
  val route_node_get : Elm_map.route -> string
  val route_waypoint_get : Elm_map.route -> string
  val name_add :
    Evas.obj ->
    ?addr:string ->
    ?lon:float -> ?lat:float -> ?cb:Elm_map.name_cb -> unit -> Elm_map.name
  val name_address_get : Elm_map.name -> string
  val name_region_get : Elm_map.name -> float * float
  val name_del : Elm_map.name -> unit
  val track_add : Evas.obj -> Elm_map.route -> Evas.obj
  val track_remove : Evas.obj -> Evas.obj -> unit
end