如何解决此MarkerCluster签入/签出错误(传单salesforce)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决此MarkerCluster签入/签出错误(传单salesforce)?相关的知识,希望对你有一定的参考价值。

问题是,当我检查覆盖层和我再次检查后,我收到此错误:

未捕获的TypeError:无法读取dist / leaflet.markercluster.js中未定义的throws的属性'x':1:25696 TypeError:无法读取L.DistanceGrid._sqDist中未定义的属性'x'(DistanceGrid.js:114) 位于eval的e._addLayer(MarkerClusterGroup.js:974)的L.DistanceGrid.getNearObject(DistanceGrid.js:94)(MarkerClusterGroup.js:249) 在e.addLayers(MarkerClusterGroup.js:283)e.addLayers(layersupport.js:99)e.onAdd(layersupport.js:517)e._layerAdd(leaflet.js:5)at e.whenReady(leaflet) .js:5)在e.addLayer(leaflet.js:5)

I saw that this function from DistanceGrid(is in leaflet library) which is called when i check in on the overlay 

_sqDist: function (p, p2) {
      var dx = p2.x - p.x,
          dy = p2.y - p.y;
      return dx * dx + dy * dy;
  }

当我签入时,p是以某种方式未定义。我已经在很长一段时间里一直在努力解决这个错误。也许你有一些建议

标记是为组定义的,并且它们被正确显示,问题仅在于签出结账时。一旦我检查出它们群集就像他们应该消失一样,一旦我签到我就会收到之前提到的错误而不是在地图上显示群集

这是控制器代码:

JS controller: 
var map = L.map('map', {zoomControl: true, tap: false, preferCanvas:true})
var group1,group2,group3,group4;
var myRenderer = L.canvas({ padding: 0.5 });
 var markers = L.markerClusterGroup.layerSupport( { 
        chunkedLoading: true,
        renderer: myRenderer,
        iconCreateFunction: function  (cluster) {
        var childCount = cluster.getChildCount();

        var c = ' marker-cluster-';
        if (childCount < 10) {
            c += 'small';
        } 
        else if (childCount < 100) {
            c += 'medium';
        } 
        else {
                c += 'large';
        }

        return new L.DivIcon({ html: '<div><span>' + childCount + '</span> 
</div>', 
                              className: 'marker-cluster' + c, iconSize: 
 new L.Point(40, 40) });
            }
});

 group1 = L.layerGroup(),
       group2 = L.layerGroup(),
      group3 = L.layerGroup(),
       group4 = L.layerGroup(),

    markers.checkIn([group1, group2, group3, group4]);

    var overlayMaps = {
        "g1": group1,
        "g2": group2,
        "g3":group3,
        "g4":group4
    };
    var control = L.control.layers(null, overlayMaps, { collapsed: true });


    control.addTo(map);

    group1.addTo(map); // Adding to map or to AutoMCG are now equivalent.
    group2.addTo(map);
    group3.addTo(map);
    group4.addTo(map);

 markers.addTo(map);

PS:我不知道如何提供一个可行的版本,因为这是一个salesforce应用程序

答案

Leaflet.markercluster.layerSupport插件可能无法很好地处理chunkedLoading选项。

我不确定为什么你需要定期“结账”和“签到”?您是指使用图层控件删除/添加叠加层吗?

否则,如果你“只”需要一个解决方案来使用Leaflet.markercluster和图层控件,你可以尝试更简单的插件Leaflet.FeatureGroup.SubGroup,虽然如果chunkedLoading是问题的原因,它可能也会是相同的插入。

以上是关于如何解决此MarkerCluster签入/签出错误(传单salesforce)?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 TFS 中组的特定用户提供签出和签入访问权限

如何检索分支上元素的结帐评论?

Microsoft Access 签入和签出

TF10121 错误 Visual Studio 2013

以编程方式编写 TFS 命令行以获取最新版本、签出和签入

TFS命令tf:undo(强制签入别人签出的文件)(转)