Source: managers/RastreamentoManager.js

/**
 * @ngdoc managers
 * @name RastreamentoManager
 * @module s4c.managers.RastreamentoManager
 *
 * @description
 * `RastreamentoManager` Componente para comunicação entre uma página html qualquer e o controller da diretiva
 * 
 * 
 */
(function () {
    'use strict';

    function RastreamentoManager(MainState, $q, $mdDialog, MapaService) {
        var subItens = new L.LayerGroup([]);

        return {
            'ativo': false,
            'activeWindow': false,
            'top': 10,
            'right': 10,
            'data': {},
            'pontoMovelAtivo': null,
            'posicoesER': [],
            'posicaoAtualER': {},
            'subItens': new L.LayerGroup([]),

            /**
             * @method abrirAreaAtuacao
             * @param {*} id 
             */
            'abrirAreaAtuacao': function (id) {
                this.ativo = true;
                var areaAtuacao = MainState.getDirective('areaAtuacao');
                areaAtuacao.buscarRegiao(id);
            },
            /**
             * @method voarParaSubItem
             * @param {*} data 
             * @param {*} obj 
             */
            'voarParaSubItem': function (data, obj) {
                var coords;

                MainState.managers.HabilitarCamadasManager.habilitarCamadas(obj);

                if (typeof obj.geojson === 'string') {
                    coords = JSON.parse(obj.geojson);
                } else {
                    coords = obj.geojson;
                }
                var coords2 = JSON.parse(data.poiGeometricoBuffer);
                var centroid = turf.centroid(coords2);
                /*var distancia = turf.distance(
                    turf.point([coords.coordinates[1], coords.coordinates[0]]),
                    centroid,
                    'miles');*/

                MapaService.destacarSubItem(coords);
                /*var southWest = new L.LatLng(coords.coordinates[1], coords.coordinates[0]),
                northEast = new L.LatLng(coords.coordinates[1], coords.coordinates[0]),
                bounds = new L.LatLngBounds(southWest, northEast);
                
                mapa.fitBounds(bounds);*/
            },
            /**
             * @method fechar
             * @param {*} force 
             */
            'fechar': function (force) {
                var self = this;

                if (!force) {
                    self.ativo = false;

                } else {
                    mapa.changeClass(false);
                    self.ativo = false;
                }

                var areaAtuacao = MainState.getDirective('rastreamento');
                areaAtuacao.fechar();
                MapaService.removerPoiClicado();
                MapaService.removerLinhas();
                MapaService.removerLayers(subItens.getLayers());
                subItens.clearLayers();
            }
        };
    }

    RastreamentoManager.$inject = [
        'MainState',
        '$q',
        '$mdDialog',
        'MapaService'
    ];

    angular.module('s4c.managers')
        .service('RastreamentoManager', RastreamentoManager);
})();