You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal自定义模块中未分组标记使用Control Layer筛选后无法重新显示问题

未分组Marker筛选后无法重新显示问题修复方案

根因说明

该问题仅在登录态出现、匿名访问正常,本质是Drupal登录后加载的管理员专属JS脚本和Marker控制逻辑存在全局作用域冲突,匿名状态下不会加载这类后台专属脚本,因此功能正常。

具体修复步骤

  • 优先替换Marker可见性控制的写法,放弃直接操作visible属性,改为调用地图SDK原生的setVisible方法,避免全局JS修改属性后不触发渲染的问题:
// 筛选触发时的正确写法
// 隐藏marker
marker.setVisible(false);
// 显示marker
marker.setVisible(true);
  • 给未分组Marker添加独立标识,和分组Marker的逻辑完全隔离,避免筛选时的遍历匹配错误:
// 初始化Marker阶段给未分组项加自定义标记
marker.isUnGrouped = true;

// 复选框触发筛选时单独处理
const isChecked = document.querySelector('#你的筛选复选框ID').checked;
allMarkers.forEach(item => {
  if(item.isUnGrouped) {
    item.setVisible(isChecked);
  }
})
  • 给自定义模块的JS添加闭包隔离全局作用域,避免Drupal全局jQuery或其他变量污染你的逻辑:
(function ($, Drupal) {
  // 你的所有Marker初始化、筛选控制逻辑都放在该闭包内
})(jQuery, Drupal);

验证方法:登录状态下打开浏览器控制台,点击复选框后打印无法显示的Marker的可见性属性,如果属性为true但界面不渲染,说明是全局JS拦截了属性变更的渲染触发,替换为原生setVisible方法即可解决。

内容的提问来源于stack exchange,提问作者Daniele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:15:07