# new CustomTilingScheme(optionsopt)
自定义瓦片平铺方案,在使用时有如下限制:
- 裁图原点必须在地图范围的左上角区域;
- 仅支持如同谷歌地图的瓦片组织方式,即Y轴编号从上到下递增,X轴编号从左到右递增;
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
Object | 构造函数的参数对象,包含的属性如下: |
|
ellipsoid |
Ellipsoid | Ellipsoid.WGS84 | 表面被瓦片平铺的参考椭球体,默认为WGS84椭球体 |
wkt |
String | 投影坐标系的通识文本(Well Known Text) |
|
wkid |
String | 投影坐标系的通识编码(Well Known ID) |
|
tileInfo |
Object | 必传。瓦片的属性信息,地图服务可以不提供该参数,该参数有固定的格式要求,详见下方示例 |
|
axisDirection |
Object | 瓦片组织方向(裁图方向)。axisDirection.x=1代表x轴由左往右为正,axisDirection.x=-1代表x轴由右往左为正;axisDirection.y=1代表x轴由下往上为正,axisDirection.y=-1代表x轴由上往下为正。例如wmts的axisDirection为{x:1,y:-1}。 |
|
rectangleSouthwest |
Cartesian2 | 地图数据范围的西南角 |
|
rectangleNortheast |
Cartesian2 | 地图数据范围的东北角 |
请参考以下示例:
[1、创建自定义瓦片切分规则][2、百度地图]
[3、自定义裁图方式地图]
[4、更多示例请参考数据图层示例]
支持如下方法:
[1、获取指定详细级别X方向上的瓦片总数][2、获取指定详细级别Y方向上的瓦片总数]
[3、计算一个坐标点在某一详细级别中位于某一瓦片的X、Y坐标]
[4、将以地理坐标经纬度弧度指定的矩形转换到此瓦片平铺方案的投影坐标系]
[5、将瓦片平铺的X、Y坐标和详细级别转换为以此瓦片平铺方案的投影坐标系表示的矩形]
[6、将瓦片平铺的X、Y坐标和高度转换为以弧度表示的矩形范围]
示例
// ES5引入方式
const { CustomTilingScheme } = zondy
// ES6引入方式
import { CustomTilingScheme } from "@mapgis/webclient-cesium-plugin"
// 瓦片的属性信息
const tileInfo = {
dpi: 0,
format: 'PNG',
size: [256, 256], // 瓦片宽高的像素大小
origin: {
coordinates: [471388.6716802692, 3471062.732487645], // 裁图原点
type: 'Point', // 裁图原点类型
},
lods: [
{
level: 0,
resolution: 661.4583333333334,
scale: 2500000,
},
{
level: 1,
resolution: 330.7291666666667,
scale: 1250000,
},
{
level: 2,
resolution: 165.36458333333334,
scale: 625000,
},
{
level: 3,
resolution: 82.68229166666667,
scale: 312500,
},
{
level: 4,
resolution: 41.341145833333336,
scale: 156250,
},
{
level: 5,
resolution: 20.670572916666668,
scale: 78125,
}
]
}
// 瓦片的四至范围
const extent = {
xmin: 471388.6716802692,
ymin: 3316805.3361792937,
xmax: 603520.9945763454,
ymax: 3471062.732487645,
}
// 创建自定义瓦片切分规则
const tilingScheme = new CustomTilingScheme({
ellipsoid: Cesium.Ellipsoid.WGS84,
wkid: 4547,
wkt: '+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs', // https://epsg.io/4547
tileInfo, // 瓦片的属性信息,地图服务可以不提供该参数
rectangleSouthwest: new Cesium.Cartesian2(extent.xmin, extent.ymin), // 投影矩形范围的西南角
rectangleNortheast: new Cesium.Cartesian2(extent.xmax, extent.ymax), // 投影矩形范围的东北角
})
成员变量
方法
# getNumberOfXTilesAtLevel(level)
获取指定详细级别X方向上的瓦片总数
参数:
名称 | 类型 | 描述 |
---|---|---|
level |
Number | 详细级别 |
给定level详细级别中X方向的瓦片数量
# getNumberOfYTilesAtLevel(level)
获取指定详细级别Y方向上的瓦片总数
参数:
名称 | 类型 | 描述 |
---|---|---|
level |
Number | 详细级别 |
给定level详细级别中Y方向的瓦片数量
# positionToTileXY(position, level, resultopt)
计算一个坐标点在某一详细级别中位于某一瓦片的X、Y坐标
参数:
名称 | 类型 | 描述 |
---|---|---|
position |
Cartographic | 坐标点 |
level |
Number | 详细级别(该级别为lods中对应的级别数组下标) |
result |
Cartesian2 | 保存结果的Cartesian2对象,若未定义则创建新的Cartesian2对象并返回 |
返回指定的'result',如果'result'未定义,则为包含矩形的Cartesian2新对象
# rectangleToNativeRectangle(rectangle, resultopt)
将以地理坐标经纬度弧度指定的矩形转换到此瓦片平铺方案的投影坐标系
参数:
名称 | 类型 | 描述 |
---|---|---|
rectangle |
Rectangle | 要进行投影转换的矩形范围 |
result |
Rectangle | 保存结果的Rectangle对象,若未定义则创建新的Rectangle对象并返回 |
返回指定的'result',如果'result'未定义,则为包含矩形的Rectangle新对象
# tileXYToNativeRectangle(x, y, level, resultopt)
将瓦片平铺的X、Y坐标和详细级别转换为以此瓦片平铺方案的投影坐标系表示的矩形
参数:
名称 | 类型 | 描述 |
---|---|---|
x |
Number | 瓦片在X方向上的坐标 |
y |
Number | 瓦片在Y方向上的坐标 |
level |
Number | 详细级别 |
result |
Rectangle | 保存结果的Rectangle对象,若未定义则创建新的Rectangle对象并返回 |
返回指定的'result',如果'result'未定义,则为包含矩形的Rectangle新对象
# tileXYToRectangle(x, y, level, resultopt)
将瓦片平铺的X、Y坐标和高度转换为以弧度表示的矩形范围
参数:
名称 | 类型 | 描述 |
---|---|---|
x |
Number | 瓦片在X方向上的坐标 |
y |
Number | 瓦片在Y方向上的坐标 |
level |
Number | 详细级别 |
result |
Rectangle | 返回指定的'result',如果'result'未定义,则为包含矩形的Rectangle新对象 |
返回指定的'result',如果'result'未定义,则为包含矩形的Rectangle新对象