The version in gmMarkers makes the most sense to me: 
```javascript
      scope.$on('gmMarkersRedraw', function(event, objectsName) {
        if (objectsName == null || objectsName === attrs.gmObjects) {
          updateMarkers(scope);
          updateMarkers(scope, scope.gmObjects());
        }
      });
```

With the way you have it, callling `gmPolylinesRedraw` with no `objectsName` argument will basically clear all polylines from the map.

The way it is in `gmMarkers`, you can do `$scope.$broadcast('gmMarkersRedraw')` to redraw all markers and `$scope.$broadcast('gmMarkersRedraw', 'myObjects')` to just redraw the markers corresponding to those objects.