-
Notifications
You must be signed in to change notification settings - Fork 994
/
Draw.Circle.js
83 lines (72 loc) · 2.2 KB
/
Draw.Circle.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
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
/**
* @class L.Draw.Circle
* @aka Draw.Circle
* @inherits L.Draw.SimpleShape
*/
L.Draw.Circle = L.Draw.SimpleShape.extend({
statics: {
TYPE: 'circle'
},
options: {
shapeOptions: {
stroke: true,
color: '#3388ff',
weight: 4,
opacity: 0.5,
fill: true,
fillColor: null, //same as color by default
fillOpacity: 0.2,
clickable: true
},
showRadius: true,
metric: true, // Whether to use the metric measurement system or imperial
feet: true, // When not metric, use feet instead of yards for display
nautic: false // When not metric, not feet use nautic mile for display
},
// @method initialize(): void
initialize: function (map, options) {
// Save the type so super can fire, need to do this as cannot do this.TYPE :(
this.type = L.Draw.Circle.TYPE;
this._initialLabelText = L.drawLocal.draw.handlers.circle.tooltip.start;
L.Draw.SimpleShape.prototype.initialize.call(this, map, options);
},
_drawShape: function (latlng) {
// Calculate the distance based on the version
if (L.GeometryUtil.isVersion07x()) {
var distance = this._startLatLng.distanceTo(latlng);
} else {
var distance = this._map.distance(this._startLatLng, latlng);
}
if (!this._shape) {
this._shape = new L.Circle(this._startLatLng, distance, this.options.shapeOptions);
this._map.addLayer(this._shape);
} else {
this._shape.setRadius(distance);
}
},
_fireCreatedEvent: function () {
var circle = new L.Circle(this._startLatLng, this._shape.getRadius(), this.options.shapeOptions);
L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, circle);
},
_onMouseMove: function (e) {
var latlng = e.latlng,
showRadius = this.options.showRadius,
useMetric = this.options.metric,
radius;
this._tooltip.updatePosition(latlng);
if (this._isDrawing) {
this._drawShape(latlng);
// Get the new radius (rounded to 1 dp)
radius = this._shape.getRadius().toFixed(1);
var subtext = '';
if (showRadius) {
subtext = L.drawLocal.draw.handlers.circle.radius + ': ' +
L.GeometryUtil.readableDistance(radius, useMetric, this.options.feet, this.options.nautic);
}
this._tooltip.updateContent({
text: this._endLabelText,
subtext: subtext
});
}
}
});