aboutsummaryrefslogtreecommitdiff
path: root/src/types/leaflet.d.ts
blob: c1eef16dcd772dd2b0a989ccde4b8e0d07e1d1ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
export as namespace L

// Map

export function map(element: string, options?: MapOptions): Map

export interface MapOptions {
  center: number[],
  zoom: number,
  attributionControl: boolean,
}

export interface Map {
  addLayer: (layer: Layer | FeatureGroup) => void,
  removeLayer: (layer: Layer | FeatureGroup) => void,
  addEventListener: (name: string, fn: (e: MapEvent) => void) => void,
  getBounds: () => LatLngBounds,
  fitBounds: (bounds: LatLngBounds, options: { padding: [number, number] } | undefined) => void,
}

// LatLngBounds

export interface LatLngBounds {
  contains: (otherBounds: LatLngBounds) => boolean,
}

// Feature group

export interface FeatureGroup {
  clearLayers: () => void,
  addLayer: (layer: Layer | FeatureGroup) => void,
  removeLayer: (layer: Layer | FeatureGroup) => void,
  getBounds: () => LatLngBounds,
}

export function featureGroup(xs?: Layer[]): L.FeatureGroup

// Layer

export interface Layer {
  addEventListener: (name: string, fn: (e: MapEvent) => void) => void,
  getLatLng: () => Pos,
  setLatLng: (pos: Pos) => void,
}

export function tileLayer(url: string): Layer

// Marker

export function marker(
  pos: Pos, 
  options: {
    draggable: boolean,
    autoPan: boolean,
    icon: Icon,
  }
): Layer

// Circle

export function circle(
  pos: Pos, 
  options: {
    radius: number,
    color: string,
    fillColor: string,
  },
): Layer

// Icon

export interface Icon {}

export function divIcon(
  params: {
    className: string,
    popupAnchor: number[],
    html: Element,
  }
): Icon

// Pos

export interface Pos {
  lat: number,
  lng: number,
}

// MapEvent

interface MapEvent {
  originalEvent: MouseEvent,
  latlng: {lat: number, lng: number},
}