diff --git a/src/component/marker/MarkPointView.js b/src/component/marker/MarkPointView.js index ba6982abffd282bc2ffea09711110001e852c27b..d95b6f2f93e0ecc6b5c883bc2c31adc4f9d9a12c 100644 --- a/src/component/marker/MarkPointView.js +++ b/src/component/marker/MarkPointView.js @@ -102,6 +102,10 @@ export default MarkerView.extend({ mpData.each(function (idx) { var itemModel = mpData.getItemModel(idx); + var symbol = itemModel.getShallow('symbol'); + if (typeof symbol === 'function') { + symbol = symbol(mpModel.getRawValue(idx), mpModel.getDataParams(idx)); + } var symbolSize = itemModel.getShallow('symbolSize'); if (typeof symbolSize === 'function') { // FIXME 这里不兼容 ECharts 2.x,2.x 貌似参数是整个数据? @@ -113,7 +117,7 @@ export default MarkerView.extend({ symbolSize: symbolSize, color: itemModel.get('itemStyle.color') || seriesData.getVisual('color'), - symbol: itemModel.getShallow('symbol') + symbol: symbol }); }); diff --git a/src/util/symbol.js b/src/util/symbol.js index 0df28c2eb1f8442178d479faa1f0630ec566a62a..54c4e7e5a99d37d7c48b7de5a9c0533808ee3438 100644 --- a/src/util/symbol.js +++ b/src/util/symbol.js @@ -332,11 +332,15 @@ function symbolPathSetColor(color, innerColor) { export function createSymbol(symbolType, x, y, w, h, color, keepAspect) { // TODO Support image object, DynamicImage. + var isFunction = typeof symbolType === 'function' + if (isFunction) { + symbolType = symbolType(); + } + var symbolPath; var isEmpty = symbolType.indexOf('empty') === 0; if (isEmpty) { symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6); } - var symbolPath; if (symbolType.indexOf('image://') === 0) { symbolPath = graphic.makeImage(