angular-google-maps icon indicating copy to clipboard operation
angular-google-maps copied to clipboard

[2.1.X][master] Saving the coordinates of polygon drawn using drawingManager

Open sushant-kumar17 opened this issue 9 years ago • 10 comments

How can I save the coordinates of polygon which is drawn using drawingManager and store it in array. As I am trying 'overlaycomplete' which is not working with listener $scope.$watch('map.drawingManagerControl.getDrawingManager', function (val) { if (!$scope.map.drawingManagerControl.getDrawingManager) { alert("Hello"); return; } google.maps.event.addListener($scope.map.drawingManagerControl.getDrawingManager, 'polygoncomplete', function (e) { alert("hello"); console.log(e.getBounds()); }); });

sushant-kumar17 avatar Feb 17 '15 23:02 sushant-kumar17

Which directive are you using for drawing?

nmccready avatar Feb 18 '15 17:02 nmccready

I am using ui-gmap-manager directive

sushant-kumar17 avatar Feb 18 '15 19:02 sushant-kumar17

Did you figure this out? Im just wondering if its possible - I have a need to allow the user to draw a polygon then save its coordinates - .... maybe even some buttons for undo last point or 'start over' something like that -

I was able to get the event handler to work but I can't get the coordinates... or i dont know where they are in the returned object ...

$scope.drawingManagerEvents = { polygoncomplete: function(polygon) { console.log(polygon); } };

sorry but Im new to google maps and these directives and Im not sure what I should expect to work

ghost avatar Mar 04 '15 18:03 ghost

With the state that the current drawing manager is in you can expect this to not work. It needs to be improved. I am looking for volunteers.

nmccready avatar Mar 04 '15 18:03 nmccready

The eventhandler for the polygoncomplete event will receive a Google Map Polygon object hidden within its arguments. You can get the coordinates like so:

$scope.drawingManagerEvents = {
  polygoncomplete: function(drawingManager, eventName, scope, args) {
    var polygon = args[0];
    var path = polygon.getPath();
      var coords = [];
      for (var i = 0 ; i < path.length ; i++) {
        coords.push({
          latitude: path.getAt(i).lat(),
          longitude: path.getAt(i).lng()
        });
      }
   }
};

megatrond avatar Apr 01 '15 08:04 megatrond

Does anyone plan on working on this and submitting a PR.

nmccready avatar Apr 01 '15 11:04 nmccready

Hi, I solved eh : D I'm doing the same and took two days but finally achieved eh

overlaycomplete : function(maps,eventName, scope, args){ var polygon = args[0]; console.log(polygon.overlay.getPath().getArray()); }

herel avatar Apr 01 '15 21:04 herel

so PR or got it working with what is avail?

nmccready avatar Apr 01 '15 22:04 nmccready

So, is this working and I should use it?

sabbaka avatar Jun 01 '16 09:06 sabbaka

By adding "events" property to , above code run well.

<ui-gmap-drawing-manager options="drawingManagerOptions" control="drawingManagerControl" events="drawingManagerOptions.events"> </ui-gmap-drawing-manager>

$scope.drawingManagerOptions = { drawingControl: true, drawingControlOptions: { position: google.maps.ControlPosition.TOP_CENTER, drawingModes: [ google.maps.drawing.OverlayType.POLYGON ] }, events: { polygoncomplete: function(drawingManager, eventName, scope, args) { var polygon = args[0]; var path = polygon.getPath(); console.log(path) var coords = []; for (var i = 0 ; i < path.length ; i++) { coords.push({ latitude: path.getAt(i).lat(), longitude: path.getAt(i).lng() }); } console.log(coords); } } }

I hope this help

deruta1992 avatar Mar 21 '18 07:03 deruta1992