2017-01-16 83 views
0

II已經實現了一個地圖,它顯示標記中的客戶端。我使用的地圖爲Leaflet,AngularJS的地圖爲directive

我的問題是,當我第一次訪問地圖時,它正常工作,當我改變路線時,它擦除所有標記,返回地圖屏幕,它沒有標記加載,只有當我重新加載這一頁。

$ Window.location.reload()函數。

因此,當我訪問地圖所在的頁面時,我想到了使用$ window.location.reload()。當我點擊頁面的菜單圖標(快捷方式)時,我會調用該函數,並重新加載顯示標記的頁面。

vm.recarregarRota = function(){ 
    $window.location.reload(); 
} 

查看:這是載入地圖的代碼。

<div class="col-md-12 box_map" style="padding: 20px 30px 20px 30px;"> 
<div id="recent_activity" class="box_whiteframe_map"> 
    <leaflet defaults="vm.defaults" lf-center="vm.center" ng-init="vm.buscaEnderecoClientesEmpresas()" markers="vm.markers" width="100%" height="480px"></leaflet> 
</div> 

控制器:在所述控制器用於加載DB數據並將其分配給所述標誌物的功能。這也是我創建標記的功能。並延長地圖的屬性,如告訴它,它的起始位置就是在這樣的座標..

  vm.markers = new Array(); //CRIA MARKERS A SEREM UTILIZADOS NO MAP 

    vm.buscaEnderecoClientesEmpresas = function() { //Function used to load DB data and assign to bookmarks. It is also in this function that I create the bookmarks .... 

     vm.items.then(function(items) { // Read array of return 
      relatoriosService.carregarEnderecoClientesEmpresas(dados).then(function(response) { 
       if (response.data != 'null') { 
        vm.enderecoClientesEmpresas = response.data; //return array 
        angular.forEach(vm.enderecoClientesEmpresas, function(value, key) { //FOREACH UTILIZADO PARA PERCORRER ARRAY 

         vm.markers.push({ 
          group: value.estado, //DATA FROM THE BD. 
          lat: value.latitude, //DATA FROM THE BD. 
          lng: value.longitude, //DATA FROM THE BD. 
          message: "teste", 
          icon: { 
           type: 'awesomeMarker', 
           prefix: 'fa', 
           icon: icon, 
           markerColor: color 
          }, 
          label: { 
           options: { 
            noHide: true 
           } 
          } 
         }); 
        }); 
       } else { 
        vm.enderecoClientesEmpresas = ''; 
       } 

      }, function(error) { 
       console.log('Erro findSemEmail: ', error); 
      }); 
     }); 
    } 


    angular.extend(vm, { // 
EXTEND THE PROPERTIES OF THE MAP (MARKERS, INCIAL LOCATION ..) 
     center: { // 
INITIAL LOCATION. 
      lat: -27.952419, 
      lng: -52.211667, 
      zoom: 6 
     }, 
     defaults: { // 
LAYER IS THE TYPE OF MAP TO BE USED 
      tileLayer: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", 
      zoomControlPosition: 'topright', 
      tileLayerOptions: { 
       opacity: 0.9, 
       detectRetina: true, 
       reuseTiles: true, 
       attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> | &copy <a href="http://www.openstreetmap.org/copyright">Funil PRÓ</a>', 
      }, 
     } 
    }); 

我的問題如下,當用戶,而不是使用系統快捷鍵進行導航,使用瀏覽器後退箭頭,頁面不會重新加載,如果使用此表單,有一種方法可以使頁面重新加載?

或者,也許當您訪問特定的路線重新加載頁面。

回答

0

「或者,也許當您訪問特定的路線重新加載頁面。」

是的,你可以通過使用$routeChange事件訪問:

$rootScope.$on("$routeChangeStart", function(event, next, current) { 
    var urlFrom = current.$$route.originalPath; // Page you are coming from 
    var urlTo = next.$$route.originalPath; // Page you are going to 
}); 

不要忘記你的模塊中注入$rootScope$window

相關問題