google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
39 lines • 4.84 kB
JavaScript
import Tool, { ToolId } from '../tool';
export default class PolygonTool extends Tool {
constructor(options) {
super(options);
this.id = 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);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9pcmFkY2hlbmtvL3dvcmtzcGFjZS9nb29nbGUtbWFwcy1kcmF3aW5nLXRvb2xzLyIsInNvdXJjZXMiOlsidG9vbHMvbWFya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxFQUFFLEVBQVMsTUFBTSxFQUFlLE1BQU0sU0FBUyxDQUFDO0FBUzNELE1BQU0sQ0FBQyxPQUFPLGtCQUFtQixTQUFRLElBQUk7SUFRM0MsWUFBWSxPQUEwQjtRQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRXpCLFVBQVU7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUk7WUFDaEMsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbCwgeyBTaGFwZSwgVG9vbElkLCBUb29sT3B0aW9ucyB9IGZyb20gJy4uL3Rvb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtlclRvb2xPcHRpb25zIGV4dGVuZHMgVG9vbE9wdGlvbnMge1xuICBkYXRhOiBnb29nbGUubWFwcy5EYXRhO1xuICBzdHlsZT86IGdvb2dsZS5tYXBzLkRhdGEuU3R5bGVPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBEcmF3aW5nTW9kZSA9ICdQb2ludCcgfCAnTGluZVN0cmluZycgfCAnUG9seWdvbicgfCBudWxsO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2x5Z29uVG9vbCBleHRlbmRzIFRvb2wge1xuICBpZDogVG9vbElkO1xuICBkYXRhOiBnb29nbGUubWFwcy5EYXRhO1xuXG4gIHByaXZhdGUgZGF0YUlkOiBEcmF3aW5nTW9kZTtcbiAgcHJpdmF0ZSBkYXRhU3R5bGU6IGdvb2dsZS5tYXBzLkRhdGEuU3R5bGVPcHRpb25zO1xuICBwcml2YXRlIGRhdGFMaXN0ZW5lcj86IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1hcmtlclRvb2xPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmlkID0gVG9vbElkLk1hcmtlcjtcbiAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICAvLyBwcml2YXRlXG4gICAgdGhpcy5kYXRhSWQgPSAnUG9pbnQnO1xuICAgIHRoaXMuZGF0YVN0eWxlID0gb3B0aW9ucy5zdHlsZSB8fCB7XG4gICAgICBjbGlja2FibGU6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFjdGl2YXRlKCk6IFNoYXBlIHtcbiAgICBsZXQgc2hhcGUgPSBzdXBlci5hY3RpdmF0ZSgpO1xuXG4gICAgdGhpcy5kYXRhLnNldERyYXdpbmdNb2RlKHRoaXMuZGF0YUlkKTtcbiAgICB0aGlzLmRhdGEuc2V0U3R5bGUodGhpcy5kYXRhU3R5bGUpO1xuXG4gICAgdGhpcy5zZXR1cExpc3RlbmVycygpO1xuXG4gICAgcmV0dXJuIHNoYXBlO1xuICB9XG5cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICBzdXBlci5kZWFjdGl2YXRlKCk7XG5cbiAgICB0aGlzLmRhdGEuc2V0RHJhd2luZ01vZGUobnVsbCk7XG4gICAgdGhpcy5jbGVhbnVwTGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGlzdGVuZXJzKCkge1xuICAgIGxldCBsaXN0ZW5lciA9IHRoaXMuZGF0YS5hZGRMaXN0ZW5lcignYWRkZmVhdHVyZScsICh7IGZlYXR1cmUgfSkgPT4ge1xuICAgICAgdGhpcy5mZWF0dXJlID0gZmVhdHVyZTtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mZWF0dXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGF0YUxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YUxpc3RlbmVyKSB7XG4gICAgICBnb29nbGUubWFwcy5ldmVudC5yZW1vdmVMaXN0ZW5lcih0aGlzLmRhdGFMaXN0ZW5lcik7XG4gICAgfVxuICB9XG59XG4iXX0=