UNPKG

google-maps-drawing-tools

Version:
24 lines 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const d2r = Math.PI / 180; // degrees to radians const r2d = 180 / Math.PI; // radians to degrees const earthsRadius = 3963; // 3963 is the radius of the earth in miles const metersToMilesMultiplier = 0.000621371; function createCircle({ lat, lng, radius, points = 32, }) { // radius in miles radius = radius * metersToMilesMultiplier; // find the raidus in lat/lon let rlat = (radius / earthsRadius) * r2d; let rlng = rlat / Math.cos(lat * d2r); let path = []; // one extra here makes sure we connect the for (let i = 0; i < points + 1; i++) { let theta = Math.PI * (i / (points / 2)); let ex = lng + rlng * Math.cos(theta); // center a + radius x * cos(theta) let ey = lat + rlat * Math.sin(theta); // center b + radius y * sin(theta) path.push(new google.maps.LatLng(ey, ex)); } return path; } exports.default = createCircle; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNpcmNsZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaXJhZGNoZW5rby93b3Jrc3BhY2UvZ29vZ2xlLW1hcHMtZHJhd2luZy10b29scy8iLCJzb3VyY2VzIjpbInV0aWxzL2NyZWF0ZS1jaXJjbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQjtBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQjtBQUNoRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQywyQ0FBMkM7QUFDdEUsTUFBTSx1QkFBdUIsR0FBRyxXQUFXLENBQUM7QUFTNUMsc0JBQXFDLEVBQ25DLEdBQUcsRUFDSCxHQUFHLEVBQ0gsTUFBTSxFQUNOLE1BQU0sR0FBRyxFQUFFLEdBQ1M7SUFDcEIsa0JBQWtCO0lBQ2xCLE1BQU0sR0FBRyxNQUFNLEdBQUcsdUJBQXVCLENBQUM7SUFFMUMsNkJBQTZCO0lBQzdCLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsMkNBQTJDO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7UUFDMUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUNBQW1DO1FBRTFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUMzQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXhCRCwrQkF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkMnIgPSBNYXRoLlBJIC8gMTgwOyAvLyBkZWdyZWVzIHRvIHJhZGlhbnNcbmNvbnN0IHIyZCA9IDE4MCAvIE1hdGguUEk7IC8vIHJhZGlhbnMgdG8gZGVncmVlc1xuY29uc3QgZWFydGhzUmFkaXVzID0gMzk2MzsgLy8gMzk2MyBpcyB0aGUgcmFkaXVzIG9mIHRoZSBlYXJ0aCBpbiBtaWxlc1xuY29uc3QgbWV0ZXJzVG9NaWxlc011bHRpcGxpZXIgPSAwLjAwMDYyMTM3MTtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDaXJjbGVPcHRpb25zIHtcbiAgbGF0OiBudW1iZXI7XG4gIGxuZzogbnVtYmVyO1xuICByYWRpdXM6IG51bWJlcjsgLy8gbWV0ZXJzXG4gIHBvaW50cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQ2lyY2xlKHtcbiAgbGF0LFxuICBsbmcsXG4gIHJhZGl1cyxcbiAgcG9pbnRzID0gMzIsXG59OiBDcmVhdGVDaXJjbGVPcHRpb25zKTogZ29vZ2xlLm1hcHMuTGF0TG5nW10ge1xuICAvLyByYWRpdXMgaW4gbWlsZXNcbiAgcmFkaXVzID0gcmFkaXVzICogbWV0ZXJzVG9NaWxlc011bHRpcGxpZXI7XG5cbiAgLy8gZmluZCB0aGUgcmFpZHVzIGluIGxhdC9sb25cbiAgbGV0IHJsYXQgPSAocmFkaXVzIC8gZWFydGhzUmFkaXVzKSAqIHIyZDtcbiAgbGV0IHJsbmcgPSBybGF0IC8gTWF0aC5jb3MobGF0ICogZDJyKTtcbiAgbGV0IHBhdGggPSBbXTtcblxuICAvLyBvbmUgZXh0cmEgaGVyZSBtYWtlcyBzdXJlIHdlIGNvbm5lY3QgdGhlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzICsgMTsgaSsrKSB7XG4gICAgbGV0IHRoZXRhID0gTWF0aC5QSSAqIChpIC8gKHBvaW50cyAvIDIpKTtcbiAgICBsZXQgZXggPSBsbmcgKyBybG5nICogTWF0aC5jb3ModGhldGEpOyAvLyBjZW50ZXIgYSArIHJhZGl1cyB4ICogY29zKHRoZXRhKVxuICAgIGxldCBleSA9IGxhdCArIHJsYXQgKiBNYXRoLnNpbih0aGV0YSk7IC8vIGNlbnRlciBiICsgcmFkaXVzIHkgKiBzaW4odGhldGEpXG5cbiAgICBwYXRoLnB1c2gobmV3IGdvb2dsZS5tYXBzLkxhdExuZyhleSwgZXgpKTtcbiAgfVxuXG4gIHJldHVybiBwYXRoO1xufVxuIl19