index.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.Marker = void 0;
  4. var tslib_1 = require("tslib");
  5. var util_1 = require("@antv/util");
  6. var core_1 = require("../../core");
  7. var util_2 = require("../../util");
  8. var symbol_1 = require("./symbol");
  9. var utils_1 = require("./utils");
  10. function getType(symbol) {
  11. var markerType = (0, utils_1.parseMarker)(symbol);
  12. if (['base64', 'url', 'image'].includes(markerType)) {
  13. return 'image';
  14. }
  15. if (symbol && markerType === 'symbol') {
  16. return 'path';
  17. }
  18. return null;
  19. }
  20. var Marker = /** @class */ (function (_super) {
  21. tslib_1.__extends(Marker, _super);
  22. function Marker() {
  23. return _super !== null && _super.apply(this, arguments) || this;
  24. }
  25. Marker.prototype.render = function (attributes, container) {
  26. var symbol = attributes.symbol, _a = attributes.size, size = _a === void 0 ? 16 : _a, style = tslib_1.__rest(attributes, ["symbol", "size"]);
  27. var type = getType(symbol);
  28. (0, util_2.ifShow)(!!type, (0, util_2.select)(container), function (group) {
  29. group
  30. .maybeAppendByClassName("marker", type)
  31. .attr('className', "marker ".concat(type, "-marker"))
  32. .call(function (selection) {
  33. if (type === 'image') {
  34. // todo 大小和 path symbol 保持一致
  35. var r = size * 2;
  36. selection.styles({
  37. img: symbol,
  38. width: r,
  39. height: r,
  40. x: -size,
  41. y: -size,
  42. });
  43. }
  44. else {
  45. var r = size / 2;
  46. var symbolFn = (0, util_1.isFunction)(symbol) ? symbol : Marker.getSymbol(symbol);
  47. selection.styles(tslib_1.__assign({ path: symbolFn === null || symbolFn === void 0 ? void 0 : symbolFn(0, 0, r) }, style));
  48. }
  49. });
  50. });
  51. };
  52. Marker.MARKER_SYMBOL_MAP = new Map();
  53. /**
  54. * 注册 icon 类型
  55. * @param type
  56. * @param path
  57. */
  58. Marker.registerSymbol = function (type, symbol) {
  59. Marker.MARKER_SYMBOL_MAP.set(type, symbol);
  60. };
  61. /**
  62. * 获取已经注册的 icon 的 path
  63. */
  64. Marker.getSymbol = function (type) {
  65. return Marker.MARKER_SYMBOL_MAP.get(type);
  66. };
  67. return Marker;
  68. }(core_1.GUI));
  69. exports.Marker = Marker;
  70. /** Shapes for Point Geometry */
  71. Marker.registerSymbol('cross', symbol_1.cross);
  72. Marker.registerSymbol('hyphen', symbol_1.hyphen);
  73. Marker.registerSymbol('line', symbol_1.line);
  74. Marker.registerSymbol('plus', symbol_1.plus);
  75. Marker.registerSymbol('tick', symbol_1.tick);
  76. Marker.registerSymbol('circle', symbol_1.circle);
  77. Marker.registerSymbol('point', symbol_1.point);
  78. Marker.registerSymbol('bowtie', symbol_1.bowtie);
  79. Marker.registerSymbol('hexagon', symbol_1.hexagon);
  80. Marker.registerSymbol('square', symbol_1.square);
  81. Marker.registerSymbol('diamond', symbol_1.diamond);
  82. Marker.registerSymbol('triangle', symbol_1.triangle);
  83. Marker.registerSymbol('triangle-down', symbol_1.triangleDown);
  84. /** LineSymbols */
  85. Marker.registerSymbol('line', symbol_1.line);
  86. Marker.registerSymbol('dot', symbol_1.dot);
  87. Marker.registerSymbol('dash', symbol_1.dash);
  88. Marker.registerSymbol('smooth', symbol_1.smooth);
  89. Marker.registerSymbol('hv', symbol_1.hv);
  90. Marker.registerSymbol('vh', symbol_1.vh);
  91. Marker.registerSymbol('hvh', symbol_1.hvh);
  92. Marker.registerSymbol('vhv', symbol_1.vhv);
  93. //# sourceMappingURL=index.js.map