map-offline/src/leafletchart/lmap.js

57 lines
1.6 KiB
JavaScript

/**
* Leaflet component extension
*/
import LeafletCoordSys from './LeafletCoordSys';
import LeafletModel from './LeafletModel';
import LeafletView from './LeafletView';
import { ecVer } from "./helper";
function install(registers) {
// add coordinate system support for pie series for ECharts < 5.4.0
if ((ecVer[0] == 5 && ecVer[1] < 4)) {
registers.registerLayout(function(ecModel, api) {
ecModel.eachSeriesByType('pie', function (seriesModel) {
const coordSys = seriesModel.coordinateSystem;
const data = seriesModel.getData();
const valueDim = data.mapDimension('value');
if (coordSys && coordSys.type === 'lmap') {
const center = seriesModel.get('center');
const point = coordSys.dataToPoint(center);
const cx = point[0];
const cy = point[1];
data.each(valueDim, function (value, idx) {
const layout = data.getItemLayout(idx);
layout.cx = cx;
layout.cy = cy;
});
}
});
});
}
registers.registerComponentModel(LeafletModel);
registers.registerComponentView(LeafletView);
registers.registerCoordinateSystem('lmap', LeafletCoordSys);
// Action
registers.registerAction(
{
type: 'lmapRoam',
event: 'lmapRoam',
update: 'updateLayout'
},
function(payload, ecModel) {
ecModel.eachComponent('lmap', function(lmapModel) {
const lmap = lmapModel.getLeaflet();
const center = lmap.getCenter();
lmapModel.setCenterAndZoom([center.lat, center.lng], lmap.getZoom());
});
}
);
}
export {install as LeafletComponent}