google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
42 lines • 4.89 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tool_1 = require("../tool");
class PolygonTool extends tool_1.default {
constructor(options) {
super(options);
this.id = tool_1.ToolId.Marker;
this.data = options.data;
// private
this.dataId = 'Point';
this.dataStyle = options.style || {
clickable: false
};
}
activate() {
let shape = super.activate();
this.data.setDrawingMode(this.dataId);
this.data.setStyle(this.dataStyle);
this.setupListeners();
return shape;
}
deactivate() {
super.deactivate();
this.data.setDrawingMode(null);
this.cleanupListeners();
}
setupListeners() {
let listener = this.data.addListener('addfeature', ({ feature }) => {
this.feature = feature;
this.deactivate();
});
this.feature = undefined;
this.dataListener = listener;
}
cleanupListeners() {
if (this.dataListener) {
google.maps.event.removeListener(this.dataListener);
}
}
}
exports.default = PolygonTool;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9pcmFkY2hlbmtvL3dvcmtzcGFjZS9nb29nbGUtbWFwcy1kcmF3aW5nLXRvb2xzLyIsInNvdXJjZXMiOlsidG9vbHMvbWFya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0NBQTJEO0FBUzNELGlCQUFpQyxTQUFRLGNBQUk7SUFRM0MsWUFBWSxPQUEwQjtRQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQU0sQ0FBQyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRXpCLFVBQVU7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUk7WUFDaEMsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0NBQ0Y7QUF0REQsOEJBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRvb2wsIHsgU2hhcGUsIFRvb2xJZCwgVG9vbE9wdGlvbnMgfSBmcm9tICcuLi90b29sJztcblxuZXhwb3J0IGludGVyZmFjZSBNYXJrZXJUb29sT3B0aW9ucyBleHRlbmRzIFRvb2xPcHRpb25zIHtcbiAgZGF0YTogZ29vZ2xlLm1hcHMuRGF0YTtcbiAgc3R5bGU/OiBnb29nbGUubWFwcy5EYXRhLlN0eWxlT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgRHJhd2luZ01vZGUgPSAnUG9pbnQnIHwgJ0xpbmVTdHJpbmcnIHwgJ1BvbHlnb24nIHwgbnVsbDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9seWdvblRvb2wgZXh0ZW5kcyBUb29sIHtcbiAgaWQ6IFRvb2xJZDtcbiAgZGF0YTogZ29vZ2xlLm1hcHMuRGF0YTtcblxuICBwcml2YXRlIGRhdGFJZDogRHJhd2luZ01vZGU7XG4gIHByaXZhdGUgZGF0YVN0eWxlOiBnb29nbGUubWFwcy5EYXRhLlN0eWxlT3B0aW9ucztcbiAgcHJpdmF0ZSBkYXRhTGlzdGVuZXI/OiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNYXJrZXJUb29sT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pZCA9IFRvb2xJZC5NYXJrZXI7XG4gICAgdGhpcy5kYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgLy8gcHJpdmF0ZVxuICAgIHRoaXMuZGF0YUlkID0gJ1BvaW50JztcbiAgICB0aGlzLmRhdGFTdHlsZSA9IG9wdGlvbnMuc3R5bGUgfHwge1xuICAgICAgY2xpY2thYmxlOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBhY3RpdmF0ZSgpOiBTaGFwZSB7XG4gICAgbGV0IHNoYXBlID0gc3VwZXIuYWN0aXZhdGUoKTtcblxuICAgIHRoaXMuZGF0YS5zZXREcmF3aW5nTW9kZSh0aGlzLmRhdGFJZCk7XG4gICAgdGhpcy5kYXRhLnNldFN0eWxlKHRoaXMuZGF0YVN0eWxlKTtcblxuICAgIHRoaXMuc2V0dXBMaXN0ZW5lcnMoKTtcblxuICAgIHJldHVybiBzaGFwZTtcbiAgfVxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgc3VwZXIuZGVhY3RpdmF0ZSgpO1xuXG4gICAgdGhpcy5kYXRhLnNldERyYXdpbmdNb2RlKG51bGwpO1xuICAgIHRoaXMuY2xlYW51cExpc3RlbmVycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cExpc3RlbmVycygpIHtcbiAgICBsZXQgbGlzdGVuZXIgPSB0aGlzLmRhdGEuYWRkTGlzdGVuZXIoJ2FkZGZlYXR1cmUnLCAoeyBmZWF0dXJlIH0pID0+IHtcbiAgICAgIHRoaXMuZmVhdHVyZSA9IGZlYXR1cmU7XG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmVhdHVyZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRhdGFMaXN0ZW5lciA9IGxpc3RlbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwTGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLmRhdGFMaXN0ZW5lcikge1xuICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQucmVtb3ZlTGlzdGVuZXIodGhpcy5kYXRhTGlzdGVuZXIpO1xuICAgIH1cbiAgfVxufVxuIl19