angular.module('focaModalLocalizar') .directive('osmDireccion', function () { return { restrict: 'E', link: function (scope, el, attrs) { var contenedor = document.createElement('div'); el.append(contenedor); scope.map = L.map(contenedor).setView([-32.89214159952345, -68.84572999101856], attrs.zoom); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(scope.map); }, controller: ['$scope', '$timeout', function ($scope, $timeout) { //resuelve bug mapa gris en modales $timeout(function () { $scope.map.invalidateSize(); }, 100); $scope.markers = []; $scope.$watchGroup(['latitud', 'longitud'], function () { for (var i in $scope.markers) { $scope.map.removeLayer($scope.markers[i]); } $scope.markers.push( L.marker([$scope.latitud, $scope.longitud], { draggable: true }) .addTo($scope.map) .on('dragend', function () { $scope.latitud = this.getLatLng().lat; $scope.longitud = this.getLatLng().lng; $scope.$apply(); }) ); }); $scope.$on('moveMap', function (evt, data) { $scope.map.panTo(new L.LatLng(data.latitud, data.longitud)); }); }], scope: { latitud: '=', longitud: '=', zoom: '=' } }; });