geo.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. import * as echarts from '../echarts';
  20. import * as zrUtil from 'zrender/src/core/util';
  21. import '../coord/geo/GeoModel';
  22. import '../coord/geo/geoCreator';
  23. import './geo/GeoView';
  24. import '../action/geoRoam';
  25. function makeAction(method, actionInfo) {
  26. actionInfo.update = 'updateView';
  27. echarts.registerAction(actionInfo, function (payload, ecModel) {
  28. var selected = {};
  29. ecModel.eachComponent(
  30. { mainType: 'geo', query: payload},
  31. function (geoModel) {
  32. geoModel[method](payload.name);
  33. var geo = geoModel.coordinateSystem;
  34. zrUtil.each(geo.regions, function (region) {
  35. selected[region.name] = geoModel.isSelected(region.name) || false;
  36. });
  37. }
  38. );
  39. return {
  40. selected: selected,
  41. name: payload.name
  42. };
  43. });
  44. }
  45. makeAction('toggleSelected', {
  46. type: 'geoToggleSelect',
  47. event: 'geoselectchanged'
  48. });
  49. makeAction('select', {
  50. type: 'geoSelect',
  51. event: 'geoselected'
  52. });
  53. makeAction('unSelect', {
  54. type: 'geoUnSelect',
  55. event: 'geounselected'
  56. });