12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * @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) {
- if (!this._shape) {
- this._shape = new L.Circle(this._startLatLng, this._startLatLng.distanceTo(latlng), this.options.shapeOptions);
- this._map.addLayer(this._shape);
- } else {
- this._shape.setRadius(this._startLatLng.distanceTo(latlng));
- }
- },
- _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
- });
- }
- }
- });
|