历史版本2 :获取钻取地图当前层级接口 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

用户有时希望在钻取不同地图层级时,可以将不同参数传递给其他组件,那么如何实现这样的传参效果呢?

9F1D4475-FFD2-4280-B3B8-65DAC5EB3C67.GIF

1.2 实现思路

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

2. 示例编辑

2.1 准备数据

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

Snag_455719.png

2.2 设计报表

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

1615864738679164.png

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

Snag_535734.png    Snag_541b01.png

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

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

Snag_55bfb8.png

代码编辑界面如下:

Snag_5ba0c9.png

JavaScript 代码如下:

注:需要在代码编辑界面处新增 2 个参数 a 和 b ,不要忽略了。

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

4)报表块 A1 单元格插入公式:"这是第 "+$aaa+" 个参数"

$aaa 用于接收地图里面传递的参数,层级是 1 的时候,传递的是 a,层级是 2 的时候,传递的是 b。

Snag_61a243.png

2.3 效果预览

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

注:不支持移动端预览。

9F1D4475-FFD2-4280-B3B8-65DAC5EB3C67.GIF

3. 模板下载编辑

已完成模板参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\Chart\判断钻取地图层级控制参数传递.frm

点击下载模板:判断钻取地图层级控制参数传递.frm