geoRoam.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. var echarts = require("../echarts");
  2. var zrUtil = require("zrender/lib/core/util");
  3. var _roamHelper = require("./roamHelper");
  4. var updateCenterAndZoom = _roamHelper.updateCenterAndZoom;
  5. /**
  6. * @payload
  7. * @property {string} [componentType=series]
  8. * @property {number} [dx]
  9. * @property {number} [dy]
  10. * @property {number} [zoom]
  11. * @property {number} [originX]
  12. * @property {number} [originY]
  13. */
  14. echarts.registerAction({
  15. type: 'geoRoam',
  16. event: 'geoRoam',
  17. update: 'updateLayout'
  18. }, function (payload, ecModel) {
  19. var componentType = payload.componentType || 'series';
  20. ecModel.eachComponent({
  21. mainType: componentType,
  22. query: payload
  23. }, function (componentModel) {
  24. var geo = componentModel.coordinateSystem;
  25. if (geo.type !== 'geo') {
  26. return;
  27. }
  28. var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));
  29. componentModel.setCenter && componentModel.setCenter(res.center);
  30. componentModel.setZoom && componentModel.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system
  31. // So the center and zoom must be in sync. Include the series not selected by legend
  32. if (componentType === 'series') {
  33. zrUtil.each(componentModel.seriesGroup, function (seriesModel) {
  34. seriesModel.setCenter(res.center);
  35. seriesModel.setZoom(res.zoom);
  36. });
  37. }
  38. });
  39. });