UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

130 lines (129 loc) 4.84 kB
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 };