1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- L.Edit = L.Edit || {};
- /**
- * @class L.Edit.Circle
- * @aka Edit.Circle
- * @inherits L.Edit.SimpleShape
- */
- L.Edit.Circle = L.Edit.SimpleShape.extend({
- _createMoveMarker: function () {
- var center = this._shape.getLatLng();
- this._moveMarker = this._createMarker(center, this.options.moveIcon);
- },
- _createResizeMarker: function () {
- var center = this._shape.getLatLng(),
- resizemarkerPoint = this._getResizeMarkerPoint(center);
- this._resizeMarkers = [];
- this._resizeMarkers.push(this._createMarker(resizemarkerPoint, this.options.resizeIcon));
- },
- _getResizeMarkerPoint: function (latlng) {
- // From L.shape.getBounds()
- var delta = this._shape._radius * Math.cos(Math.PI / 4),
- point = this._map.project(latlng);
- return this._map.unproject([point.x + delta, point.y - delta]);
- },
- _move: function (latlng) {
- var resizemarkerPoint = this._getResizeMarkerPoint(latlng);
- // Move the resize marker
- this._resizeMarkers[0].setLatLng(resizemarkerPoint);
- // Move the circle
- this._shape.setLatLng(latlng);
- this._map.fire(L.Draw.Event.EDITMOVE, { layer: this._shape });
- },
- _resize: function (latlng) {
- var moveLatLng = this._moveMarker.getLatLng(),
- radius = moveLatLng.distanceTo(latlng);
- this._shape.setRadius(radius);
- this._map.fire(L.Draw.Event.EDITRESIZE, { layer: this._shape });
- }
- });
- L.Circle.addInitHook(function () {
- if (L.Edit.Circle) {
- this.editing = new L.Edit.Circle(this);
- if (this.options.editable) {
- this.editing.enable();
- }
- }
- this.on('add', function () {
- if (this.editing && this.editing.enabled()) {
- this.editing.addHooks();
- }
- });
- this.on('remove', function () {
- if (this.editing && this.editing.enabled()) {
- this.editing.removeHooks();
- }
- });
- });
|