获取钻取地图当前层级接口

楼主
我是社区第504714位番薯,欢迎点我头像关注我哦~

1. 概述

1.1 应用场景

用户有时希望在钻取不同地图层级时,可以在指定层级进行传参,例如下图只在钻取第二层时传参。那么如何实现这样的传参效果呢?

E1B0E88A-0256-4870-8FB1-431B47E96B6C.GIF

1.2 实现思路

需要先使用 charts.layerMap.length; 获取地图当前的钻取层级,然后可以使用 if 条件判断层级来传递不同的参数。

2. 示例

2.1 准备数据

新建决策报表,新建数据集 ds1,SQL 查询语句为:SELECT * FROM 地图1,如下图所示:

Snag_455719.png

2.2 设计报表

1)将钻取地图和报表块分别拖拽到 body 里面,如下图所示:

1615966367589363.png

2)绑定钻取地图的数据,共有 2 层,如下图所示:

Snag_535734.png  Snag_541b01.png

3)钻取地图交互属性下设置 2 个 JavaScript 类型的超级链接,实现点击地图或钻取目录后,传递参数。

上面一个超链是控制点击钻取目录的,下面的超链是控制点击地图的,它们的代码是一样的。

本示例中因为只有 2 层,所以没用到点击钻取目录传参,不过这边加了代码设置,是想让您知道可以这样做。

Snag_55bfb8.png

代码编辑界面新增一个参数 b,其值为区域名,参数设置好后,填入代码即可。

Snag_3873bf37.png

JavaScript 代码如下:

var charts = FR.Chart.WebUtils.getChart("chart0").getChartWithIndex(0);
var layer = charts.layerMap.length;   //获取钻取层级
//大区层级
if(layer == 2){
	_g().options.form.getWidgetByName("report0").gotoPage(1,"{aaa:'"+b+"'}",true); //如果当前钻取层级是第二层,那么将参数b传给报表块
}

4)编辑报表块,设计表格如下图所示:

Snag_661d097.png

5)双击 A2 单元格,添加过滤条件,让 pid 字段等于参数 aaa,这里设置筛选是为了实现参数筛选效果。

$aaa 是地图 JavaScript 代码中已有的参数,此处借该参数接收地图里面传递的参数,当钻取地图当前层级为 2 时,将参数 b 传递给报表块。

1615967139749973.png

2.3 效果预览

保存报表,点击分页预览,钻取地图层级的同时传参效果如下图所示:

注:不支持移动端预览。

1.GIF

3. 模板下载

点击下载模板:判断钻取地图层级控制参数传递.rar (24.35 K)

分享扩散:

沙发
发表于 2022-1-4 15:37:27
帆软11怎么没有这个东西啊,怎么越更新功能越乱啊!!!
板凳
发表于 2022-3-22 14:08:44
我想要的是点击市区传区域名 而不是点击省份穿区域名有办法吗    我按照你这个方法法 layer==2的时候 省份和市都会传出去参数    layer==0/1/3的时候点击钻取的时候就不传参了
地板
发表于 2022-6-20 14:24:33
有10.0新自适应下的js吗
5楼
发表于 2022-11-15 11:11:39
组合地图如何解决,在第4层里的点地图中的标记点,层级为2,和第3层的区域地图,点击区域获取的层级一样,也是2
6楼
发表于 2023-1-12 14:43:09
大佬666
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

11回帖数 8关注人数 11516浏览人数
最后回复于:2023-1-12 14:43

返回顶部 返回列表