以下是《TileJSON Specification》最新的2.1.0版的中文翻译,以便查阅。

TileJSON 2.1.0

本文档中的“必须”、“必须不”、“必备”、”应该“、“不应该”、“建议”、“可以”、“可选”的含义参照RFC 2119

1. 目的

本规范提出一种技术标准,来描述多种类型的网络地图图层的元数据信息,以方便客户端进行配置和浏览。

2. 文件格式

TileJSON描述文件采用JSON格式,参见RFC 4627。

本规范的实现必须忽略掉未知key。但是,实现必须在他们的API中暴露出
这些未知的key/values,使得API用户可以选择性地处理这些keys。
实现必须忽略keys的无效values。如果key是必选的,实现必须认为整个
TileJSON描述文件无效并且拒绝进一步处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
{
// **必选**。表示语义化的版本号。描述本JSON对象所遵守的TileJSON版本。
"tilejson": "2.1.0",

// **可选**。默认值:null。表示瓦片集的名称。名称可以是任何合法字符。
// 实现**不应该**将此名称当做HTML来解析。
"name": "compositing",

// **可选**。默认值:null。表示瓦片集的描述信息。描述可以是任何合法字符。
// 实现**不应该**将此描述当做HTML来解析。
"description": "A simple, light grey world.",

// **可选**。默认值:"1.0.0"。表示语义化的版本号。当瓦片发生更改时,次版本号
// **必须**相应地更改。这可能导致标签的变化。因此,实现方能够在次版本号变化时
// 清除缓存。更新级别的更改,**必须**限制在单块瓦片之内。
// 当瓦片更改较大时,主版本号**必须**增加。
// 实现**必须不**要使用不同主版本号的瓦片。
"version": "1.0.0",

// **可选**。默认值:null。包含地图的所有者信息。
// 实现**可以**把这部分内容当做HTML或者纯文本。
// 处于安全方面的原因,要绝对确保本字段的不会被用来进行XSS攻击或beacon跟踪。
"attribution": "<a href='http://openstreetmap.org'>OSM contributors</a>",

// **可选**。默认值:null。包含一个mustache模板,用来格式化grids数据来完成交互。
// 参见https://github.com/mapbox/utfgrid-spec/tree/master/1.2的交互部分。
"template": "{{#__teaser__}}{{NAME}}{{/__teaser__}}",

// **可选**。默认值:null。包含地图图例信息。
// 实现**可以**把这部分内容当做HTML或者纯文本。
// 处于安全方面的原因,要绝对确保本字段的不会被用来进行XSS攻击或beacon跟踪。
"legend": "Dangerous zones are red, safe zones are green",

// **可选**。默认值:"xyz"。可以是"xyz"或"tms"。主要影响瓦片坐标的y轴方向。
// 默认为global-mercator(Spherical Mercator)坐标系。
"scheme": "xyz",

// **必选**。表示一组瓦片资源。
// 如果存在{z}、{x}和{y},它们将会被相应的整数替换。
// 如果指定了多个资源,客户端可以使用任意的资源组合。
// 所有的资源**必须**为相同的URL返回相同的内容。
// 本数组**必须**至少包含一个资源。
"tiles": [
"http://localhost:8888/admin/1.0.0/world-light,broadband/{z}/{x}/{y}.png"
],

// **可选**。默认值:[]。表示一组交互资源。
// 如果存在{z}、{x}和{y},它们将会被相应的整数替换。
// 如果指定了多个资源,客户端可以使用任意的资源组合。
// 所有的资源**必须**为相同的URL返回相同的内容。
// 如果本数组没有任何内容,那么说明本瓦片集不支持交互数据。
// 参见https://github.com/mapbox/utfgrid-spec/tree/master/1.2的交互部分
"grids": [
"http://localhost:8888/admin/1.0.0/broadband/{z}/{x}/{y}.grid.json"
],

// **可选**。默认值:[]。表示一组GeoJSON格式的数据文件。
// 如果存在{z}、{x}和{y},它们将会被相应的整数替换。
// 如果指定了多个资源,客户端可以使用任意的资源组合。
// 所有的资源**必须**为相同的URL返回相同的内容。
// 如果本数组没有任何内容,那么地图上不会呈现数据内容。
"data": [
"http://localhost:8888/admin/data.geojson"
],

// **可选**。默认值:0。值域范围[0, 22]。
// 表示最小缩放级别的一个整数。
"minzoom": 0,

// **可选**。默认值:22。值域范围[0, 22]。
// 表示最大缩放级别的一个整数。**必须**大于等于minzoom
"maxzoom": 11,

// 表示地图瓦片的最大范围。这个范围**必须**覆盖到所有的缩放级别。
// 范围用WGS84坐标系下的经纬度来表示,顺序为左、下、右、上。
// 范围值可能是整数或者浮点数。
"bounds": [ -180, -85.05112877980659, 180, 85.0511287798066 ],

// **可选**。默认值:null。
// 第一个值是经度,第二个是纬度(都为WGS84坐标系),第三个是表示缩放级别的整数。
// 经度和纬度**必须**在bounds范围内。缩放级别**必须**在minzoom和maxzoom之间。
// 实现可以根据这个值设置地图的默认显示位置。
// 如果这个值为null,实现可以根据自己的算法自行决定默认位置。
"center": [ -76.275329586789, 39.153492567373, 8 ]
}

3. 缓存

客户端可以缓存从远程服务器获取的文件。当实现决定采用缓存措施时,必须
遵从为瓦片数据和TileJSON描述文件定义的有效HTTP缓存控制头。