google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
28 lines • 4.28 kB
JavaScript
import createCircle from './create-circle';
import createFeature from './create-feature';
export default function overlayToFeature(overlay) {
let paths = [];
if (overlay instanceof google.maps.Circle) {
let center = overlay.getCenter();
let radius = overlay.getRadius();
let circle = createCircle({
lat: center.lat(),
lng: center.lng(),
radius: radius,
});
paths = [circle];
}
else if (overlay instanceof google.maps.Rectangle) {
let bounds = overlay.getBounds();
let ne = bounds.getNorthEast();
let sw = bounds.getSouthWest();
let nw = new google.maps.LatLng(ne.lat(), sw.lng());
let se = new google.maps.LatLng(sw.lat(), ne.lng());
let path = [ne, se, sw, nw];
paths = [path];
}
let polygon = new google.maps.Data.Polygon(paths);
let feature = createFeature(polygon);
return feature;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS10by1mZWF0dXJlLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9pcmFkY2hlbmtvL3dvcmtzcGFjZS9nb29nbGUtbWFwcy1kcmF3aW5nLXRvb2xzLyIsInNvdXJjZXMiOlsidXRpbHMvb3ZlcmxheS10by1mZWF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBUzdDLE1BQU0sQ0FBQyxPQUFPLDJCQUEyQixPQUFnQjtJQUN2RCxJQUFJLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBRXZDLElBQUksT0FBTyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ3pDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFZO1lBQzNCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFZO1lBQzNCLE1BQU0sRUFBRSxNQUFnQjtTQUN6QixDQUFDLENBQUM7UUFFSCxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNsQjtTQUFNLElBQUksT0FBTyxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ25ELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDL0IsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQy9CLElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELElBQUksRUFBRSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFNUIsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEI7SUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxJQUFJLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFckMsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVDaXJjbGUgZnJvbSAnLi9jcmVhdGUtY2lyY2xlJztcbmltcG9ydCBjcmVhdGVGZWF0dXJlIGZyb20gJy4vY3JlYXRlLWZlYXR1cmUnO1xuXG5leHBvcnQgdHlwZSBPdmVybGF5ID1cbiAgfCBnb29nbGUubWFwcy5NYXJrZXJcbiAgfCBnb29nbGUubWFwcy5Qb2x5Z29uXG4gIHwgZ29vZ2xlLm1hcHMuUG9seWxpbmVcbiAgfCBnb29nbGUubWFwcy5SZWN0YW5nbGVcbiAgfCBnb29nbGUubWFwcy5DaXJjbGU7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG92ZXJsYXlUb0ZlYXR1cmUob3ZlcmxheTogT3ZlcmxheSkge1xuICBsZXQgcGF0aHM6IGdvb2dsZS5tYXBzLkxhdExuZ1tdW10gPSBbXTtcblxuICBpZiAob3ZlcmxheSBpbnN0YW5jZW9mIGdvb2dsZS5tYXBzLkNpcmNsZSkge1xuICAgIGxldCBjZW50ZXIgPSBvdmVybGF5LmdldENlbnRlcigpO1xuICAgIGxldCByYWRpdXMgPSBvdmVybGF5LmdldFJhZGl1cygpO1xuICAgIGxldCBjaXJjbGUgPSBjcmVhdGVDaXJjbGUoe1xuICAgICAgbGF0OiBjZW50ZXIubGF0KCkgYXMgbnVtYmVyLFxuICAgICAgbG5nOiBjZW50ZXIubG5nKCkgYXMgbnVtYmVyLFxuICAgICAgcmFkaXVzOiByYWRpdXMgYXMgbnVtYmVyLFxuICAgIH0pO1xuXG4gICAgcGF0aHMgPSBbY2lyY2xlXTtcbiAgfSBlbHNlIGlmIChvdmVybGF5IGluc3RhbmNlb2YgZ29vZ2xlLm1hcHMuUmVjdGFuZ2xlKSB7XG4gICAgbGV0IGJvdW5kcyA9IG92ZXJsYXkuZ2V0Qm91bmRzKCk7XG4gICAgbGV0IG5lID0gYm91bmRzLmdldE5vcnRoRWFzdCgpO1xuICAgIGxldCBzdyA9IGJvdW5kcy5nZXRTb3V0aFdlc3QoKTtcbiAgICBsZXQgbncgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKG5lLmxhdCgpLCBzdy5sbmcoKSk7XG4gICAgbGV0IHNlID0gbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhzdy5sYXQoKSwgbmUubG5nKCkpO1xuICAgIGxldCBwYXRoID0gW25lLCBzZSwgc3csIG53XTtcblxuICAgIHBhdGhzID0gW3BhdGhdO1xuICB9XG5cbiAgbGV0IHBvbHlnb24gPSBuZXcgZ29vZ2xlLm1hcHMuRGF0YS5Qb2x5Z29uKHBhdGhzKTtcbiAgbGV0IGZlYXR1cmUgPSBjcmVhdGVGZWF0dXJlKHBvbHlnb24pO1xuXG4gIHJldHVybiBmZWF0dXJlO1xufVxuIl19