google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
46 lines • 5.29 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.Polygon;
this.data = options.data;
// private
this.dataId = 'Polygon';
this.dataStyle = options.style || {
strokeColor: '#374046',
fillColor: '#374046',
fillOpacity: 0.5,
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);
}
}
}
exports.default = PolygonTool;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWdvbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaXJhZGNoZW5rby93b3Jrc3BhY2UvZ29vZ2xlLW1hcHMtZHJhd2luZy10b29scy8iLCJzb3VyY2VzIjpbInRvb2xzL3BvbHlnb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FBMkQ7QUFTM0QsaUJBQWlDLFNBQVEsY0FBSTtJQVEzQyxZQUFZLE9BQTJCO1FBQ3JDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFekIsVUFBVTtRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSTtZQUNoQyxXQUFXLEVBQUUsU0FBUztZQUN0QixTQUFTLEVBQUUsU0FBUztZQUNwQixXQUFXLEVBQUUsR0FBRztZQUNoQixZQUFZLEVBQUUsQ0FBQztZQUNmLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxVQUFVO1FBQ1IsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztDQUNGO0FBMURELDhCQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUb29sLCB7IFNoYXBlLCBUb29sSWQsIFRvb2xPcHRpb25zIH0gZnJvbSAnLi4vdG9vbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9seWdvblRvb2xPcHRpb25zIGV4dGVuZHMgVG9vbE9wdGlvbnMge1xuICBkYXRhOiBnb29nbGUubWFwcy5EYXRhO1xuICBzdHlsZT86IGdvb2dsZS5tYXBzLkRhdGEuU3R5bGVPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBEcmF3aW5nTW9kZSA9ICdQb2ludCcgfCAnTGluZVN0cmluZycgfCAnUG9seWdvbicgfCBudWxsO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2x5Z29uVG9vbCBleHRlbmRzIFRvb2wge1xuICBpZDogVG9vbElkO1xuICBkYXRhOiBnb29nbGUubWFwcy5EYXRhO1xuXG4gIHByaXZhdGUgZGF0YUlkOiBEcmF3aW5nTW9kZTtcbiAgcHJpdmF0ZSBkYXRhU3R5bGU6IGdvb2dsZS5tYXBzLkRhdGEuU3R5bGVPcHRpb25zO1xuICBwcml2YXRlIGRhdGFMaXN0ZW5lcj86IGdvb2dsZS5tYXBzLk1hcHNFdmVudExpc3RlbmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBvbHlnb25Ub29sT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pZCA9IFRvb2xJZC5Qb2x5Z29uO1xuICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcblxuICAgIC8vIHByaXZhdGVcbiAgICB0aGlzLmRhdGFJZCA9ICdQb2x5Z29uJztcbiAgICB0aGlzLmRhdGFTdHlsZSA9IG9wdGlvbnMuc3R5bGUgfHwge1xuICAgICAgc3Ryb2tlQ29sb3I6ICcjMzc0MDQ2JyxcbiAgICAgIGZpbGxDb2xvcjogJyMzNzQwNDYnLFxuICAgICAgZmlsbE9wYWNpdHk6IDAuNSxcbiAgICAgIHN0cm9rZVdlaWdodDogMixcbiAgICAgIGNsaWNrYWJsZTogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgYWN0aXZhdGUoKTogU2hhcGUge1xuICAgIGxldCBzaGFwZSA9IHN1cGVyLmFjdGl2YXRlKCk7XG5cbiAgICB0aGlzLmRhdGEuc2V0RHJhd2luZ01vZGUodGhpcy5kYXRhSWQpO1xuICAgIHRoaXMuZGF0YS5zZXRTdHlsZSh0aGlzLmRhdGFTdHlsZSk7XG5cbiAgICB0aGlzLnNldHVwTGlzdGVuZXJzKCk7XG5cbiAgICByZXR1cm4gc2hhcGU7XG4gIH1cblxuICBkZWFjdGl2YXRlKCkge1xuICAgIHN1cGVyLmRlYWN0aXZhdGUoKTtcblxuICAgIHRoaXMuZGF0YS5zZXREcmF3aW5nTW9kZShudWxsKTtcbiAgICB0aGlzLmNsZWFudXBMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBMaXN0ZW5lcnMoKSB7XG4gICAgbGV0IGxpc3RlbmVyID0gdGhpcy5kYXRhLmFkZExpc3RlbmVyKCdhZGRmZWF0dXJlJywgKHsgZmVhdHVyZSB9KSA9PiB7XG4gICAgICB0aGlzLmZlYXR1cmUgPSBmZWF0dXJlO1xuICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZlYXR1cmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRhTGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cExpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5kYXRhTGlzdGVuZXIpIHtcbiAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LnJlbW92ZUxpc3RlbmVyKHRoaXMuZGF0YUxpc3RlbmVyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==