开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (40)
标签 (9)
master
10.6.0.10
dev
10.6.0
yangkun
webclient_plot
10.5.6
yangkun_tiedi
yangkun_plot
10.5.5
master_fixbug
lzt_dev
dependabot/npm_and_yarn/website/follow-redirects-1.14.8
dependabot/npm_and_yarn/website/node-sass-7.0.0
dependabot/npm_and_yarn/website/postcss-7.0.39
cesium_1_84
ljy
yangkun_12_9
yangkun_12_3
mapvToMaster
10.6.0.10
10.5.6.10
10.5.5.14
10.5.5.13
onemap_10.5.4.10
v10.5.5.10
ceping
v10.5.4.10
10.5.3.10
master
分支 (40)
标签 (9)
master
10.6.0.10
dev
10.6.0
yangkun
webclient_plot
10.5.6
yangkun_tiedi
yangkun_plot
10.5.5
master_fixbug
lzt_dev
dependabot/npm_and_yarn/website/follow-redirects-1.14.8
dependabot/npm_and_yarn/website/node-sass-7.0.0
dependabot/npm_and_yarn/website/postcss-7.0.39
cesium_1_84
ljy
yangkun_12_9
yangkun_12_3
mapvToMaster
10.6.0.10
10.5.6.10
10.5.5.14
10.5.5.13
onemap_10.5.4.10
v10.5.5.10
ceping
v10.5.4.10
10.5.3.10
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (40)
标签 (9)
master
10.6.0.10
dev
10.6.0
yangkun
webclient_plot
10.5.6
yangkun_tiedi
yangkun_plot
10.5.5
master_fixbug
lzt_dev
dependabot/npm_and_yarn/website/follow-redirects-1.14.8
dependabot/npm_and_yarn/website/node-sass-7.0.0
dependabot/npm_and_yarn/website/postcss-7.0.39
cesium_1_84
ljy
yangkun_12_9
yangkun_12_3
mapvToMaster
10.6.0.10
10.5.6.10
10.5.5.14
10.5.5.13
onemap_10.5.4.10
v10.5.5.10
ceping
v10.5.4.10
10.5.3.10
TileResolution.js 3.66 KB
一键复制 编辑 原始数据 按行查看 历史
/**
* @author 基础平台-龚瑞强
* @description 针对不同分辨率来计算对应的瓦片错级
*/
export class TileResolution {
constructor() {
/**
* key:瓦片尺寸 "256,512,1024"
* val: 层级与分辨关系数组
*/
this.levelResolutionToTileSizes = {};
}
// 赤道周长(单位:m)
static get EQUATOR_PERIMTER() {
return 6378137;
}
/**
* 通过瓦片大小获取层级与分辨关系的数组
* @param {*} tileSize 瓦片尺寸,三维用的瓦片尺寸为512的levelResolution数组
* @returns 层级与分辨关系的数组
*/
getLevelResolutionByTileSize(tileSize) {
if (!this.levelResolutionToTileSizes[tileSize]) {
const arr = [];
for (let level = 0; level <= 24; level++) {
const r = TileResolution.EQUATOR_PERIMTER; // 赤道半径
const resolutionOnTheEquator = 360 / (tileSize * 2 ** level);
arr.push({
level,
resolution: resolutionOnTheEquator
});
}
this.levelResolutionToTileSizes[tileSize] = arr;
}
return this.levelResolutionToTileSizes[tileSize];
}
/**
* 获取cesium层级与分辨率关系的数组
* @returns 层级与分辨率关系的数组
*/
getLevelResolutionCesium() {
return this.getLevelResolutionByTileSize(512);
}
/**
* 通过分辨率获取其在地图里面对应的层级
* @param {number} resolution 当前层级分辨率
* @param {Array<Record<string,number>>} levelResolutions 地图的层级与最大分辨率的对应关系
* @returns 当前分辨对应地图里面的层级
*/
getNearLevel(resolution, levelResolutions) {
const levelResolutionsTemp = JSON.parse(JSON.stringify(levelResolutions));
const nearlevel = levelResolutionsTemp.sort(function (a, b) {
return Math.abs(a.resolution - resolution) - Math.abs(b.resolution - resolution);
})[0].level;
return nearlevel;
}
/**
* 通过分辨率来计算偏移量
* @param {number} resolution 当前层级分辨率
* @param {Array<Record<string,number>>} levelResolutions 当前层级与分辨率关系数组
* @param {number} levelValue 初始层级
* @returns 偏移量
*/
getZoomOffsetByResolution({ resolution, levelResolutions, levelValue }) {
// 获取当前分辨率对应cesium里面的层级,计算偏移量
const level = this.getNearLevel(resolution, levelResolutions);
const zoomOffset = levelValue - level;
return zoomOffset;
}
/**
* 通过瓦片信息来计算偏移量
* @param {number} tileInfo 瓦片信息
* @param {boolean} isCesium 如果是三维图层,则不需要通过size去计算层级与瓦片的数组
* @returns 偏移量
*/
getZoomOffsetByTileInfo(tileInfo, isCesium = false, tileSize = 256) {
let levelResolutions = [];
const lodBegin = tileInfo.lods[0];
if (!isCesium) {
tileSize = tileSize || 256;
if (tileInfo.size && tileInfo.size.length > 0) {
tileSize = tileInfo.size[0];
}
levelResolutions = this.getLevelResolutionByTileSize(tileSize);
} else {
levelResolutions = this.getLevelResolutionCesium();
}
let zoomOffset = this.getZoomOffsetByResolution({
resolution: lodBegin.resolution,
levelResolutions: levelResolutions,
levelValue: lodBegin.level
});
return zoomOffset;
}
}
export default TileResolution;
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

MapGIS Client for JavaScript:为云GIS网络客户端开发平台,将传统WebGIS与云GIS完美融合, 集成Cesium、MapboXGL,、Leaflet、OpenLayers四大主流地图开源框架和Echarts、MapV、D3等可视化库,进一步增强了大数据、实时流数据的高效可视化表达和分析功能。
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/wolfbruce/WebClient-JavaScript.git
git@gitee.com:wolfbruce/WebClient-JavaScript.git
wolfbruce
WebClient-JavaScript
MapGIS-WebClient-JavaScript
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /