UNPKG

echarts

Version:

A powerful charting and visualization library for browser

56 lines (45 loc) 1.93 kB
var zrUtil = require('zrender/lib/core/util'); var roamHelper = require('./roamHelper'); var echarts = require('../echarts'); var actionInfo = { type: 'geoRoam', event: 'geoRoam', update: 'updateLayout' }; /** * @payload * @property {string} [component=series] * @property {string} name Component name * @property {number} [dx] * @property {number} [dy] * @property {number} [zoom] * @property {number} [originX] * @property {number} [originY] */ echarts.registerAction(actionInfo, function (payload, ecModel) { var componentType = payload.component || 'series'; ecModel.eachComponent(componentType, function (componentModel) { if (componentModel.name === payload.name) { var geo = componentModel.coordinateSystem; if (geo.type !== 'geo') { return; } var roamDetailModel = componentModel.getModel('roamDetail'); var res = roamHelper.calcPanAndZoom(roamDetailModel, payload); componentModel.setRoamPan && componentModel.setRoamPan(res.x, res.y); componentModel.setRoamZoom && componentModel.setRoamZoom(res.zoom); geo && geo.setPan(res.x, res.y); geo && geo.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system // So the roamDetail must be in sync. Include the series not selected by legend if (componentType === 'series') { zrUtil.each(componentModel.seriesGroup, function (seriesModel) { seriesModel.setRoamPan(res.x, res.y); seriesModel.setRoamZoom(res.zoom); }); } } }); });