google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
41 lines • 5.02 kB
JavaScript
import Tool, { ToolId } from '../tool';
export default class LineTool extends Tool {
constructor(options) {
super(options);
this.id = ToolId.Line;
this.data = options.data;
// private
this.dataId = 'LineString';
this.dataStyle = options.style || {
strokeColor: '#374046',
strokeWeight: 2,
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaXJhZGNoZW5rby93b3Jrc3BhY2UvZ29vZ2xlLW1hcHMtZHJhd2luZy10b29scy8iLCJzb3VyY2VzIjpbInRvb2xzL2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLEVBQUUsRUFBUyxNQUFNLEVBQWUsTUFBTSxTQUFTLENBQUM7QUFTM0QsTUFBTSxDQUFDLE9BQU8sZUFBZ0IsU0FBUSxJQUFJO0lBUXhDLFlBQVksT0FBd0I7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV6QixVQUFVO1FBQ1YsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJO1lBQ2hDLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLFlBQVksRUFBRSxDQUFDO1lBQ2YsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9vbCwgeyBTaGFwZSwgVG9vbElkLCBUb29sT3B0aW9ucyB9IGZyb20gJy4uL3Rvb2wnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmVUb29sT3B0aW9ucyBleHRlbmRzIFRvb2xPcHRpb25zIHtcbiAgZGF0YTogZ29vZ2xlLm1hcHMuRGF0YTtcbiAgc3R5bGU/OiBnb29nbGUubWFwcy5EYXRhLlN0eWxlT3B0aW9ucztcbn1cblxuZXhwb3J0IHR5cGUgRHJhd2luZ01vZGUgPSAnUG9pbnQnIHwgJ0xpbmVTdHJpbmcnIHwgJ1BvbHlnb24nIHwgbnVsbDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGluZVRvb2wgZXh0ZW5kcyBUb29sIHtcbiAgaWQ6IFRvb2xJZDtcbiAgZGF0YTogZ29vZ2xlLm1hcHMuRGF0YTtcblxuICBwcml2YXRlIGRhdGFJZDogRHJhd2luZ01vZGU7XG4gIHByaXZhdGUgZGF0YVN0eWxlOiBnb29nbGUubWFwcy5EYXRhLlN0eWxlT3B0aW9ucztcbiAgcHJpdmF0ZSBkYXRhTGlzdGVuZXI/OiBnb29nbGUubWFwcy5NYXBzRXZlbnRMaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBMaW5lVG9vbE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuaWQgPSBUb29sSWQuTGluZTtcbiAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICAvLyBwcml2YXRlXG4gICAgdGhpcy5kYXRhSWQgPSAnTGluZVN0cmluZyc7XG4gICAgdGhpcy5kYXRhU3R5bGUgPSBvcHRpb25zLnN0eWxlIHx8IHtcbiAgICAgIHN0cm9rZUNvbG9yOiAnIzM3NDA0NicsXG4gICAgICBzdHJva2VXZWlnaHQ6IDIsXG4gICAgICBjbGlja2FibGU6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGFjdGl2YXRlKCk6IFNoYXBlIHtcbiAgICBsZXQgc2hhcGUgPSBzdXBlci5hY3RpdmF0ZSgpO1xuXG4gICAgdGhpcy5kYXRhLnNldERyYXdpbmdNb2RlKHRoaXMuZGF0YUlkKTtcbiAgICB0aGlzLmRhdGEuc2V0U3R5bGUodGhpcy5kYXRhU3R5bGUpO1xuXG4gICAgdGhpcy5zZXR1cExpc3RlbmVycygpO1xuXG4gICAgcmV0dXJuIHNoYXBlO1xuICB9XG5cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICBzdXBlci5kZWFjdGl2YXRlKCk7XG5cbiAgICB0aGlzLmRhdGEuc2V0RHJhd2luZ01vZGUobnVsbCk7XG4gICAgdGhpcy5jbGVhbnVwTGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGlzdGVuZXJzKCkge1xuICAgIGxldCBsaXN0ZW5lciA9IHRoaXMuZGF0YS5hZGRMaXN0ZW5lcignYWRkZmVhdHVyZScsICh7IGZlYXR1cmUgfSkgPT4ge1xuICAgICAgdGhpcy5mZWF0dXJlID0gZmVhdHVyZTtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mZWF0dXJlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGF0YUxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YUxpc3RlbmVyKSB7XG4gICAgICBnb29nbGUubWFwcy5ldmVudC5yZW1vdmVMaXN0ZW5lcih0aGlzLmRhdGFMaXN0ZW5lcik7XG4gICAgfVxuICB9XG59XG4iXX0=