2017-06-28 26 views
0

マップを作成し、salesforceの雷コンポーネントのマーカを追加しました。 の問題は です:マーカーをクリック>>地図をクリックします(これはポップアップを閉じる)>>ズームイン& >このエラーは、各ズームステップのために表示される:閉じるポップアップ後にズームしたときにリーフレットエラーが発生しました

({ 
     drawMap: function(component,map){ 

       var mapElement = component.find("map").getElement(); 
       map = L.map(mapElement).setView([35.232, 40.5656], 12); 
     L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}', 
       { 
        attribution: 'Tiles © Esri' 
       }).addTo(map); 

      var markers = L.marker([35.232, 40.5656]).addTo(map); 

       component.set("v.map", map); 
      component.set("v.markers", markers); 

     }, 

     putMarkers: function(component) { 
      var map = component.get('v.map'); 
      var markers = component.get('v.markers'); 
      var projects = component.get('v.projects'); 
      var projectsAction = component.get("c.getProjectsList"); 
      var markerArray = [];     
      var symbol; 
var symbol1 = 'symbolURl';   
var symbol2 = 'symbolURl'; 

      projectsAction.setCallback(this, function(response) { 
       var state = response.getState(); 
       if(state == "SUCCESS"){ 
        projects = response.getReturnValue(); 

         if (markers) { 
       markers.remove(); 
      } 
      // Add Markers 
      if (map && projects && projects.length> 0) {    
       for (var i=0; i<projects.length; i++) { 
        var project = projects[i]; 
        if (project.Latitude && project.Longitude) { 
         var latLng = [project.Latitude, project.Longitude]; 
         var currentStatus = project.status; 
          if(currentStatus=="status1") 
         symbol = symbol1; 

         else if(currentStatus=="status2") 
         symbol = symbol2; 

         var popupTemplate = '<b style="color:black; font-size:11px;">Project Name:</b><span style="float:right;margin-right:10px;color:#800000;font-size:11px;width:110px;text-align:right; white-space:normal;" > '+project.name; 

        var icon = new L.DivIcon({ 
         className:'', 
         html: '<img style="width:34px;height:37px;" src="'+symbol+'"/>'+ 
         '<span style="font-weight:bold;font-size:9pt;">text</span>' 
            }); 

         var marker = L.marker(latLng, {project: project,icon:icon,title:project.name}).bindPopup(popupTemplate,{minWidth:200}); 
         markerArray.push(marker); 


        } 
       } 
       L.layerGroup(markerArray).addTo(map); 

       component.set("v.map", map); 
      }} 
       else if(state == "ERROR"){ 
        console.log('Error in calling server side action'); 
       } 
      }); 

      $A.enqueueAction(projectsAction); 
     } 

およびJavaScriptコントローラで:

Uncaught TypeError: Cannot read property '_latLngToNewLayerPoint' of null throws at /resource/1498411629000/leaflet/leaflet.js:9:10763

これはJavaScriptのヘルパーコンポーネントのコードである

jsLoaded: function(component, event, helper) { 
    var map = component.get("v.map"); 
     if (!map) { 
     helper.drawMap(component,map); 
     helper.putMarkers(component); 
     } 
}, 
    projectsChangeHandler: function(component, event, helper) { 
    helper.putMarkers(component); 
} 

ここで問題はありますか?

答えて

0

を助けてください、私はleaflet.jsファイル編集して、それを解決:単語の 検索(_latLngToNewLayerPoint) を条件とコードをラップ:

if(this._map) 

ので_MAPがnullの場合、

をスキップ

このバグがsalesforceでのみ表示される理由がわかりません

関連する問題