57 lines
1.6 KiB
JavaScript
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}
|