MCPcopy Create free account
hub / github.com/SuperMap/iClient-JavaScript / getScales

Method getScales

src/openlayers/mapping/WebMap.js:441–497  ·  view source on GitHub ↗

* @private * @function WebMap.prototype.getScales * @description 根据级别获取每个级别对应的分辨率 * @param {Object} baseLayerInfo - 底图的图层信息

(baseLayerInfo)

Source from the content-addressed store, hash-verified

439 * @param {Object} baseLayerInfo - 底图的图层信息
440 */
441 getScales(baseLayerInfo) {
442 let scales = [],
443 resolutions = {},
444 res,
445 scale,
446 resolutionArray = [],
447 coordUnit = baseLayerInfo.coordUnit || baseLayerInfo.units || olProj.get(baseLayerInfo.projection).getUnits();
448 if (!coordUnit) {
449 coordUnit = this.baseProjection == 'EPSG:3857' ? 'm' : 'degree';
450 }
451 if (baseLayerInfo.visibleScales && baseLayerInfo.visibleScales.length > 0) {
452 //底部设置过固定比例尺,则使用设置的
453 baseLayerInfo.visibleScales.forEach((scale) => {
454 let value = 1 / scale;
455 res = this.getResFromScale(value, coordUnit);
456 scale = `1:${value}`;
457 //多此一举转换,因为toLocalString会自动保留小数点后三位,and当第二位小数是0就会保存小数点后两位。所有为了统一。
458 resolutions[this.formatScale(scale)] = res;
459 resolutionArray.push(res);
460 scales.push(scale);
461 }, this);
462 } else if (baseLayerInfo.layerType === 'WMTS') {
463 baseLayerInfo.scales.forEach((scale) => {
464 res = this.getResFromScale(scale, coordUnit, 90.7);
465 scale = `1:${scale}`;
466 //多此一举转换,因为toLocalString会自动保留小数点后三位,and当第二位小数是0就会保存小数点后两位。所有为了统一。
467 resolutions[this.formatScale(scale)] = res;
468 resolutionArray.push(res);
469 scales.push(scale);
470 }, this);
471 } else if(baseLayerInfo.layerType === 'ZXY_TILE') {
472 const { resolutions: visibleResolution } = baseLayerInfo;
473 visibleResolution.forEach(result => {
474 const currentScale = this.getScaleFromRes(result, coordUnit);
475 resolutions[this.formatScale(currentScale)] = result;
476 scales.push(currentScale);
477 })
478 resolutionArray = visibleResolution;
479 } else {
480 let { minZoom = 0, maxZoom = 22 } = baseLayerInfo,
481 view = this.map.getView();
482 for (let i = minZoom; i <= maxZoom; i++) {
483 res = view.getResolutionForZoom(i);
484 scale = this.getScaleFromRes(res, coordUnit);
485 if (scales.indexOf(scale) === -1) {
486 //不添加重复的比例尺
487 scales.push(scale);
488 let attr = scale.replace(/,/g, '');
489 resolutions[attr] = res;
490 resolutionArray.push(res);
491 }
492 }
493 }
494 this.scales = scales;
495 this.resolutions = resolutions;
496 this.resolutionArray = resolutionArray;
497 }
498 /**

Callers 2

createViewMethod · 0.95
WebMapSpec.jsFile · 0.80

Calls 8

getResFromScaleMethod · 0.95
formatScaleMethod · 0.95
getScaleFromResMethod · 0.95
forEachMethod · 0.80
pushMethod · 0.80
getViewMethod · 0.80
indexOfMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected