示例说明
在电子表格中,可以实现地图染色,但是地图区域上无法显示数据。可以使用宏代码点击地图区域,弹出相关数据。如下:
设置方法
- 参考电子表格地图自动染色 创建地图电子表格。
- 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建服务器端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onBeforeOutput;并把下面的服务器宏代码复制到代码区域,根据实际情况进行修改。
服务器宏类型
类型
对象
事件
ServerSide
spreadsheetReport
onBeforeOutput
服务器宏代码
function main(spreadsheetReport) { //地图数据在第二个sheet,获取第二个sheet,从0开始计数 var sheet = spreadsheetReport.sheets[1]; //获取名称字段 var posList = sheet.getExpandedPositions("A13"); //获取数据字段 var posList2 = sheet.getExpandedPositions("B13"); //把地区名称和数据添加到电子表格的MAP对象 customProperties中 var customProperties = spreadsheetReport.customProperties; for (var i = 0; i < posList.length; i++) { var pos = posList[i]; var pos2 = posList2[i]; var value = sheet.getCellValue(pos); var value2 = sheet.getCellValue(pos2); if (value) { customProperties.put(value, value2); } } }
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onRender;并把下面的客户端宏代码复制到代码区域,根据实际情况进行修改。
服务器宏类型
类型
对象
事件
ClientSide
spreadsheetReport
onRender
客户端宏代码
function main(spreadsheetReport) { //地图在第一个sheet,需要判断当前sheet是不是第一个sheet if (spreadsheetReport.currentSheetIndex != 0) return; //获取服务端宏中的MAP对象 var customProperties = spreadsheetReport.elemSheetFrame.contentWindow.customProperties; //遍历电子表格中的图形对象,并添加点击事件 for (var name in spreadsheetReport.shapesMap) { var value = customProperties[name]; if (value) { var shape = spreadsheetReport.shapesMap[name]; shape.style.cursor = "pointer"; //传递地区名称和数据给onclick方法 shape.setAttribute("_name", name); shape.setAttribute("_value", value); shape.onclick = function() { var name = this.getAttribute("_name"); var value = this.getAttribute("_value"); //弹窗 var modalWindow = jsloader.resolve("freequery.common.modalWindow"); modalWindow.open(value, name); } } } }
资源下载:migrate.xml