Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何解决这个MarkerCluster签出/签出错误(传单销售)?

如何解决这个MarkerCluster签出/签出错误(传单销售)?
EN

Stack Overflow用户
提问于 2019-04-22 00:01:51
回答 2查看 481关注 0票数 1

问题是,当我签出覆盖时,在再次签入之后,我会收到以下错误:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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;
  }

当我签入的时候,is p是不确定的。我已经为这个错误挣扎了很长一段时间了。也许你有什么建议

标记是为组定义的,它们被正确地显示,只有签入签出时才会出现问题。一旦我按他们应该的方式检查出集群,我就会收到前面提到的错误,而不是将集群显示在地图上。

以下是控制器代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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应用程序

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-23 18:05:06

chunkedLoading选项可能被Leaflet.markercluster.layerSupport插件处理得不太好。

我不知道你为什么要定期“结账”和“结账”?您是指使用图层控件来删除/添加您的覆盖吗?

否则,如果您“只”需要一个解决方案来将Leaflet.markercluster与图层控件一起使用,您可以尝试使用更简单的插件Leaflet.FeatureGroup.SubGroup,尽管如果chunkedLoading是问题的原因,那么这个插件可能也是一样的。

票数 1
EN

Stack Overflow用户

发布于 2022-02-05 08:23:48

我通过将所有顶点加在一起来解决这个问题,我创建了一个包含所有顶点的数组,然后使用函数addLayers添加它们。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  const folders = 800;
  for (let index = 0; index < folders; index++) {
    const folder = this.createFolder();
    this.folders.push(folder);
  }
  this.clustersFeature.addLayers(this.folders);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55791116

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文