google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
51 lines • 5.01 kB
JavaScript
import guid from './utils/guid';
/**
* Base class for all tools
*/
/**
* Available tool ids to use for `manager.changeTool`.
*/
export var ToolId;
(function (ToolId) {
ToolId["Marker"] = "marker";
ToolId["Circle"] = "circle";
ToolId["Polygon"] = "polygon";
ToolId["Line"] = "line";
ToolId["Rectangle"] = "rectangle";
})(ToolId || (ToolId = {}));
export default class Tool {
constructor(options) {
this.map = options.map;
}
activate() {
// TODO
if (this.map) {
this.map.setOptions({ draggableCursor: 'crosshair' });
}
this.shape = {
id: guid(),
toolType: this.id,
feature: this.feature
};
return this.shape;
}
deactivate() {
// TODO
if (this.map) {
this.map.setOptions({ draggableCursor: 'default' });
}
}
set feature(feature) {
if (feature && this.shape) {
feature.setProperty('id', this.shape.id);
}
if (this.shape) {
this.shape.feature = feature;
}
this._feature = feature;
}
get feature() {
return this._feature;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaXJhZGNoZW5rby93b3Jrc3BhY2UvZ29vZ2xlLW1hcHMtZHJhd2luZy10b29scy8iLCJzb3VyY2VzIjpbInRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sY0FBYyxDQUFDO0FBRWhDOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxNQU1YO0FBTkQsV0FBWSxNQUFNO0lBQ2hCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDZCQUFtQixDQUFBO0lBQ25CLHVCQUFhLENBQUE7SUFDYixpQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsTUFBTSxLQUFOLE1BQU0sUUFNakI7QUFrQkQsTUFBTSxDQUFDLE9BQU87SUFPWixZQUFZLE9BQW9CO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU87UUFDUCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLEVBQUUsRUFBRSxJQUFJLEVBQUU7WUFDVixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPO1FBQ1AsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUE2QztRQUN2RCxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBndWlkIGZyb20gJy4vdXRpbHMvZ3VpZCc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIHRvb2xzXG4gKi9cblxuLyoqXG4gKiBBdmFpbGFibGUgdG9vbCBpZHMgdG8gdXNlIGZvciBgbWFuYWdlci5jaGFuZ2VUb29sYC5cbiAqL1xuZXhwb3J0IGVudW0gVG9vbElkIHtcbiAgTWFya2VyID0gJ21hcmtlcicsXG4gIENpcmNsZSA9ICdjaXJjbGUnLFxuICBQb2x5Z29uID0gJ3BvbHlnb24nLFxuICBMaW5lID0gJ2xpbmUnLFxuICBSZWN0YW5nbGUgPSAncmVjdGFuZ2xlJ1xufVxuXG4vKipcbiAqIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNoYXBlIGluIHByb2dyZXNzIG9yIGNvbXBsZXRlZC5cbiAqXG4gKiBXaGVuIHRoZSBzaGFwZSBpcyBjb21wbGV0ZWQsIHRoaXMgb2JqZWN0IHdpbGwgaGF2ZSBpdCdzIGBmZWF0dXJlYCBhdHRyaWJ1dGVcbiAqIGZpbGxlZCBpbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaGFwZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRvb2xUeXBlPzogVG9vbElkO1xuICBmZWF0dXJlPzogZ29vZ2xlLm1hcHMuRGF0YS5GZWF0dXJlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xPcHRpb25zIHtcbiAgbWFwOiBnb29nbGUubWFwcy5NYXA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIFRvb2wge1xuICBtYXA6IGdvb2dsZS5tYXBzLk1hcCB8IG51bGw7XG4gIGlkPzogVG9vbElkO1xuICBzaGFwZT86IFNoYXBlO1xuXG4gIHByaXZhdGUgX2ZlYXR1cmU/OiBnb29nbGUubWFwcy5EYXRhLkZlYXR1cmU7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogVG9vbE9wdGlvbnMpIHtcbiAgICB0aGlzLm1hcCA9IG9wdGlvbnMubWFwO1xuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgLy8gVE9ET1xuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgdGhpcy5tYXAuc2V0T3B0aW9ucyh7IGRyYWdnYWJsZUN1cnNvcjogJ2Nyb3NzaGFpcicgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5zaGFwZSA9IHtcbiAgICAgIGlkOiBndWlkKCksXG4gICAgICB0b29sVHlwZTogdGhpcy5pZCxcbiAgICAgIGZlYXR1cmU6IHRoaXMuZmVhdHVyZVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5zaGFwZTtcbiAgfVxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgLy8gVE9ET1xuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgdGhpcy5tYXAuc2V0T3B0aW9ucyh7IGRyYWdnYWJsZUN1cnNvcjogJ2RlZmF1bHQnIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBmZWF0dXJlKGZlYXR1cmU6IGdvb2dsZS5tYXBzLkRhdGEuRmVhdHVyZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChmZWF0dXJlICYmIHRoaXMuc2hhcGUpIHtcbiAgICAgIGZlYXR1cmUuc2V0UHJvcGVydHkoJ2lkJywgdGhpcy5zaGFwZS5pZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hhcGUpIHtcbiAgICAgIHRoaXMuc2hhcGUuZmVhdHVyZSA9IGZlYXR1cmU7XG4gICAgfVxuXG4gICAgdGhpcy5fZmVhdHVyZSA9IGZlYXR1cmU7XG4gIH1cblxuICBnZXQgZmVhdHVyZSgpOiBnb29nbGUubWFwcy5EYXRhLkZlYXR1cmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mZWF0dXJlO1xuICB9XG59XG4iXX0=