forked from PaulLeCam/react-leaflet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMapControl.js
44 lines (34 loc) · 987 Bytes
/
MapControl.js
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
// @flow
import { Control } from 'leaflet'
import { Component } from 'react'
import type { MapControlProps } from './types'
export default class MapControl<
LeafletElement: Control,
Props: MapControlProps,
> extends Component<Props> {
leafletElement: LeafletElement
constructor(props: Props) {
super(props)
this.leafletElement = this.createLeafletElement(this.props)
}
createLeafletElement(_props: Props): LeafletElement {
throw new Error('createLeafletElement() must be implemented')
}
updateLeafletElement(fromProps: Props, toProps: Props): void {
if (toProps.position !== fromProps.position) {
this.leafletElement.setPosition(toProps.position)
}
}
componentDidMount() {
this.leafletElement.addTo(this.props.leaflet.map)
}
componentDidUpdate(prevProps: Props) {
this.updateLeafletElement(prevProps, this.props)
}
componentWillUnmount() {
this.leafletElement.remove()
}
render(): * {
return null
}
}