cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
130 lines (129 loc) • 4.84 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import { createHashMap, retrieve2, isString, mixin } from "../../../../zrender/lib/core/util.mjs";
import BoundingRect from "../../../../zrender/lib/core/BoundingRect.mjs";
import View from "../View.mjs";
import geoSourceManager from "./geoSourceManager.mjs";
import { SINGLE_REFERRING } from "../../util/model.mjs";
var GEO_DEFAULT_PARAMS = {
"geoJSON": {
aspectScale: 0.75,
invertLongitute: true
},
"geoSVG": {
aspectScale: 1,
invertLongitute: false
}
};
var geo2DDimensions = ["lng", "lat"];
var Geo = function(_super) {
__extends(Geo2, _super);
function Geo2(name, map, opt) {
var _this = _super.call(this, name) || this;
_this.dimensions = geo2DDimensions;
_this.type = "geo";
_this._nameCoordMap = createHashMap();
_this.map = map;
var projection = opt.projection;
var source = geoSourceManager.load(map, opt.nameMap, opt.nameProperty);
var resource = geoSourceManager.getGeoResource(map);
_this.resourceType = resource ? resource.type : null;
var regions = _this.regions = source.regions;
var defaultParams = GEO_DEFAULT_PARAMS[resource.type];
_this._regionsMap = source.regionsMap;
_this.regions = source.regions;
_this.projection = projection;
var boundingRect;
if (projection) {
for (var i = 0; i < regions.length; i++) {
var regionRect = regions[i].getBoundingRect(projection);
boundingRect = boundingRect || regionRect.clone();
boundingRect.union(regionRect);
}
} else {
boundingRect = source.boundingRect;
}
_this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
_this.aspectScale = projection ? 1 : retrieve2(opt.aspectScale, defaultParams.aspectScale);
_this._invertLongitute = projection ? false : defaultParams.invertLongitute;
return _this;
}
Geo2.prototype._transformTo = function(x, y, width, height) {
var rect = this.getBoundingRect();
var invertLongitute = this._invertLongitute;
rect = rect.clone();
if (invertLongitute) {
rect.y = -rect.y - rect.height;
}
var rawTransformable = this._rawTransformable;
rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));
var rawParent = rawTransformable.parent;
rawTransformable.parent = null;
rawTransformable.decomposeTransform();
rawTransformable.parent = rawParent;
if (invertLongitute) {
rawTransformable.scaleY = -rawTransformable.scaleY;
}
this._updateTransform();
};
Geo2.prototype.getRegion = function(name) {
return this._regionsMap.get(name);
};
Geo2.prototype.getRegionByCoord = function(coord) {
var regions = this.regions;
for (var i = 0; i < regions.length; i++) {
var region = regions[i];
if (region.type === "geoJSON" && region.contain(coord)) {
return regions[i];
}
}
};
Geo2.prototype.addGeoCoord = function(name, geoCoord) {
this._nameCoordMap.set(name, geoCoord);
};
Geo2.prototype.getGeoCoord = function(name) {
var region = this._regionsMap.get(name);
return this._nameCoordMap.get(name) || region && region.getCenter();
};
Geo2.prototype.dataToPoint = function(data, noRoam, out) {
if (isString(data)) {
data = this.getGeoCoord(data);
}
if (data) {
var projection = this.projection;
if (projection) {
data = projection.project(data);
}
return data && this.projectedToPoint(data, noRoam, out);
}
};
Geo2.prototype.pointToData = function(point) {
var projection = this.projection;
if (projection) {
point = projection.unproject(point);
}
return point && this.pointToProjected(point);
};
Geo2.prototype.pointToProjected = function(point) {
return _super.prototype.pointToData.call(this, point);
};
Geo2.prototype.projectedToPoint = function(projected, noRoam, out) {
return _super.prototype.dataToPoint.call(this, projected, noRoam, out);
};
Geo2.prototype.convertToPixel = function(ecModel, finder, value) {
var coordSys = getCoordSys(finder);
return coordSys === this ? coordSys.dataToPoint(value) : null;
};
Geo2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
var coordSys = getCoordSys(finder);
return coordSys === this ? coordSys.pointToData(pixel) : null;
};
return Geo2;
}(View);
mixin(Geo, View);
function getCoordSys(finder) {
var geoModel = finder.geoModel;
var seriesModel = finder.seriesModel;
return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || (seriesModel.getReferringComponents("geo", SINGLE_REFERRING).models[0] || {}).coordinateSystem : null;
}
var Geo$1 = Geo;
export { Geo$1 as default, geo2DDimensions };