2017-06-28 31 views
0

我在salesforce闪电组件中创建了一个贴图并在其上添加了标记, 问题是: 点击标记>>点击地图(关闭弹出窗口)>>放大和缩小>当关闭弹出窗口后缩放时出现传单错误

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

这是在组分的javascript辅助代码:

({ 
     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控制器:

01>对于每个变焦步骤中显示该错误

问题在哪里?请帮助

回答

0

我解决它通过编辑leaflet.js文件: 搜索词(_latLngToNewLayerPoint) 与条件包裹代码:

if(this._map) 

所以如果_MAP为空,则跳过

我不知道为什么这个bug只出现在salesforce中