/** * @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 }); } } });