UNPKG

google-maps-drawing-tools

Version:
65 lines 8.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tool_1 = require("../tool"); const overlay_to_feature_1 = require("../utils/overlay-to-feature"); class RectangleTool extends tool_1.default { constructor(options) { super(options); this.id = tool_1.ToolId.Rectangle; this.data = options.data; // private this.dmId = google.maps.drawing.OverlayType.RECTANGLE; this.dm = new google.maps.drawing.DrawingManager({ drawingControl: false }); this.dmOptions = options.style || { strokeColor: '#374046', fillColor: '#374046', fillOpacity: 0.5, strokeWeight: 2, clickable: false }; // TODO: should we have a temp data layer as well? this.data.setStyle(this.dmOptions); } activate() { let shape = super.activate(); let dm = this.dm; dm.setDrawingMode(this.dmId); dm.setOptions({ [`${this.dmId}Options`]: this.dmOptions }); dm.setMap(this.map); this.setupListeners(); return shape; } deactivate() { super.deactivate(); let dm = this.dm; // "casting" to `any` because the typings are wrong in googlemaps dm.setDrawingMode(null); dm.setMap(null); this.cleanupListeners(); } setupListeners() { let dm = this.dm; let listener = dm.addListener('overlaycomplete', (event) => { let feature = overlay_to_feature_1.default(event.overlay); if (event.overlay instanceof google.maps.Circle || event.overlay instanceof google.maps.Rectangle) { event.overlay.setMap(null); } this.feature = feature; this.data.add(feature); this.deactivate(); }); this.feature = undefined; this.dmListener = listener; } cleanupListeners() { if (this.dmListener) { google.maps.event.removeListener(this.dmListener); } } } exports.default = RectangleTool; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9pcmFkY2hlbmtvL3dvcmtzcGFjZS9nb29nbGUtbWFwcy1kcmF3aW5nLXRvb2xzLyIsInNvdXJjZXMiOlsidG9vbHMvcmVjdGFuZ2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0NBQTJEO0FBQzNELG9FQUEyRDtBQU8zRCxtQkFBbUMsU0FBUSxjQUFJO0lBUzdDLFlBQVksT0FBNkI7UUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFNLENBQUMsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV6QixVQUFVO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQ3RELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDL0MsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJO1lBQ2hDLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztRQUVGLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFN0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUVqQixFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ1osQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3hDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVO1FBQ1IsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5CLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFakIsaUVBQWlFO1FBQ2pFLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBVyxDQUFDLENBQUM7UUFDL0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxLQUErQyxFQUFFLEVBQUU7WUFDbkcsSUFBSSxPQUFPLEdBQUcsNEJBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTlDLElBQUksS0FBSyxDQUFDLE9BQU8sWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNqRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QjtZQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0NBQ0Y7QUFuRkQsZ0NBbUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRvb2wsIHsgU2hhcGUsIFRvb2xJZCwgVG9vbE9wdGlvbnMgfSBmcm9tICcuLi90b29sJztcbmltcG9ydCBvdmVybGF5VG9GZWF0dXJlIGZyb20gJy4uL3V0aWxzL292ZXJsYXktdG8tZmVhdHVyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjdGFuZ2xlVG9vbE9wdGlvbnMgZXh0ZW5kcyBUb29sT3B0aW9ucyB7XG4gIGRhdGE6IGdvb2dsZS5tYXBzLkRhdGE7XG4gIHN0eWxlPzogZ29vZ2xlLm1hcHMuQ2lyY2xlT3B0aW9ucztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjdGFuZ2xlVG9vbCBleHRlbmRzIFRvb2wge1xuICBpZDogVG9vbElkO1xuICBkYXRhOiBnb29nbGUubWFwcy5EYXRhO1xuXG4gIHByaXZhdGUgZG1JZDogZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5VHlwZTtcbiAgcHJpdmF0ZSBkbTogZ29vZ2xlLm1hcHMuZHJhd2luZy5EcmF3aW5nTWFuYWdlcjtcbiAgcHJpdmF0ZSBkbU9wdGlvbnM6IGdvb2dsZS5tYXBzLkNpcmNsZU9wdGlvbnM7XG4gIHByaXZhdGUgZG1MaXN0ZW5lcj86IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFJlY3RhbmdsZVRvb2xPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlkID0gVG9vbElkLlJlY3RhbmdsZTtcbiAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICAvLyBwcml2YXRlXG4gICAgdGhpcy5kbUlkID0gZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5VHlwZS5SRUNUQU5HTEU7XG4gICAgdGhpcy5kbSA9IG5ldyBnb29nbGUubWFwcy5kcmF3aW5nLkRyYXdpbmdNYW5hZ2VyKHtcbiAgICAgIGRyYXdpbmdDb250cm9sOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuZG1PcHRpb25zID0gb3B0aW9ucy5zdHlsZSB8fCB7XG4gICAgICBzdHJva2VDb2xvcjogJyMzNzQwNDYnLFxuICAgICAgZmlsbENvbG9yOiAnIzM3NDA0NicsXG4gICAgICBmaWxsT3BhY2l0eTogMC41LFxuICAgICAgc3Ryb2tlV2VpZ2h0OiAyLFxuICAgICAgY2xpY2thYmxlOiBmYWxzZVxuICAgIH07XG5cbiAgICAvLyBUT0RPOiBzaG91bGQgd2UgaGF2ZSBhIHRlbXAgZGF0YSBsYXllciBhcyB3ZWxsP1xuICAgIHRoaXMuZGF0YS5zZXRTdHlsZSh0aGlzLmRtT3B0aW9ucyk7XG4gIH1cblxuICBhY3RpdmF0ZSgpOiBTaGFwZSB7XG4gICAgbGV0IHNoYXBlID0gc3VwZXIuYWN0aXZhdGUoKTtcblxuICAgIGxldCBkbSA9IHRoaXMuZG07XG5cbiAgICBkbS5zZXREcmF3aW5nTW9kZSh0aGlzLmRtSWQpO1xuICAgIGRtLnNldE9wdGlvbnMoe1xuICAgICAgW2Ake3RoaXMuZG1JZH1PcHRpb25zYF06IHRoaXMuZG1PcHRpb25zXG4gICAgfSk7XG4gICAgZG0uc2V0TWFwKHRoaXMubWFwKTtcblxuICAgIHRoaXMuc2V0dXBMaXN0ZW5lcnMoKTtcblxuICAgIHJldHVybiBzaGFwZTtcbiAgfVxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgc3VwZXIuZGVhY3RpdmF0ZSgpO1xuXG4gICAgbGV0IGRtID0gdGhpcy5kbTtcblxuICAgIC8vIFwiY2FzdGluZ1wiIHRvIGBhbnlgIGJlY2F1c2UgdGhlIHR5cGluZ3MgYXJlIHdyb25nIGluIGdvb2dsZW1hcHNcbiAgICBkbS5zZXREcmF3aW5nTW9kZShudWxsIGFzIGFueSk7XG4gICAgZG0uc2V0TWFwKG51bGwpO1xuXG4gICAgdGhpcy5jbGVhbnVwTGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGlzdGVuZXJzKCkge1xuICAgIGxldCBkbSA9IHRoaXMuZG07XG4gICAgbGV0IGxpc3RlbmVyID0gZG0uYWRkTGlzdGVuZXIoJ292ZXJsYXljb21wbGV0ZScsIChldmVudDogZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5Q29tcGxldGVFdmVudCkgPT4ge1xuICAgICAgbGV0IGZlYXR1cmUgPSBvdmVybGF5VG9GZWF0dXJlKGV2ZW50Lm92ZXJsYXkpO1xuXG4gICAgICBpZiAoZXZlbnQub3ZlcmxheSBpbnN0YW5jZW9mIGdvb2dsZS5tYXBzLkNpcmNsZSB8fCBldmVudC5vdmVybGF5IGluc3RhbmNlb2YgZ29vZ2xlLm1hcHMuUmVjdGFuZ2xlKSB7XG4gICAgICAgIGV2ZW50Lm92ZXJsYXkuc2V0TWFwKG51bGwpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZlYXR1cmUgPSBmZWF0dXJlO1xuICAgICAgdGhpcy5kYXRhLmFkZChmZWF0dXJlKTtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mZWF0dXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZG1MaXN0ZW5lciA9IGxpc3RlbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwTGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLmRtTGlzdGVuZXIpIHtcbiAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnJlbW92ZUxpc3RlbmVyKHRoaXMuZG1MaXN0ZW5lcik7XG4gICAgfVxuICB9XG59XG4iXX0=