<!DOCTYPE html>
<html lang="fr">

<head>
  <style>
    html,
    body {
      height: 100%;
    }
    
    .angular-google-map-container {
      height: 100vh;
    }
    
    div.btn {
      height: 2 5px;
      width: 50px;
      border: solid 1px black;
      text-align: center;
      line-height: 25px;
      border-radius: 5px;
      cursor: pointer;
    }
  </style>
  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-simple-logger/0.1.7/angular-simple-logger.js"></script>
  <script src='https://maps.googleapis.com/maps/api/js?sensor=false'></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-google-maps/2.4.1/angular-google-maps.js"></script>

</head>

<body>
  <script>
    var app = angular.module("app", ['uiGmapgoogle-maps']);
    app.controller("myCtrl", function($scope) {
      var $ctrl = this;
      $ctrl.map = {
        center: {
          latitude: 39.8282,
          longitude: -98.5795
        },
        zoom: 4
      };
      $ctrl.polygons = [];

      $ctrl.test = function() {

        if (!angular.isObject($ctrl.map) || !angular.isFunction($ctrl.map.draw)) {
          throw new Error(JSON.stringify($ctrl.map));
        }

        _.defer(function() {
          $ctrl.map.draw().then(function() {
            console.log(this);
            console.log($ctrl.polygons);
          });
        });
      };

    });
  </script>

  <div ng-app="app" ng-controller="myCtrl as $ctrl">
    <div class="btn" ng-click="$ctrl.test()">Test</div>
    <ui-gmap-google-map center='$ctrl.map.center' zoom='$ctrl.map.zoom' aria-label="Google map">
      <ui-gmap-free-draw-polygons polygons="$ctrl.polygons" draw="$ctrl.map.draw"></ui-gmap-free-draw-polygons>
    </ui-gmap-google-map>
  </div>
</body>

</html>
// Code goes here

/* Styles go here */