google-maps-drawing-tools
Version:
Unified drawing tools for Google Maps
40 lines (32 loc) • 1.08 kB
text/typescript
import createCircle from './create-circle';
import createFeature from './create-feature';
export type Overlay =
| google.maps.Marker
| google.maps.Polygon
| google.maps.Polyline
| google.maps.Rectangle
| google.maps.Circle;
export default function overlayToFeature(overlay: Overlay) {
let paths: google.maps.LatLng[][] = [];
if (overlay instanceof google.maps.Circle) {
let center = overlay.getCenter();
let radius = overlay.getRadius();
let circle = createCircle({
lat: center.lat() as number,
lng: center.lng() as number,
radius: radius as number,
});
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;
}