地图-高德 天地图 WMTS 服务及规则
项目里原本用到高德地图的卫星图,但是放大到最小时,有些区域会显示“该区域没有卫星图”,这肯定不行,客户那里也说不过去,最后发现天地图的卫星图是可以的,但是整个项目已经写完了,用到地图的地方也多,换地图重写不现实,时间不够了,最后研究了一下,发现高德地图可以使用第三方图层,而天地图正好提供这种服务,所以,一通操作完美解决。 因为两个地图提供的示例是没办法正正好成功的,所以,记录一下写法,下次可以少走弯路
一.地图服务API
高德地图
天地图
二、使用步骤
1.使用高德地图
2.申请天地图地图服务Key
3.示例:
高德示例
var wms = new AMap.TileLayer.WMTS({ url: https://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_Density/MapServer/WMTS/, blend:false, tileSize:256, params:{ Layer: 0, Version:1.0.0, Format: image/png } }) wms.setMap(map);
天地图示例
(1)元数据查询 http://t0.tianditu.gov.cn/img_w/wmts?request=GetCapabilities&service=wmts (2)地图瓦片获取 http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={ z}&TILEROW={ x}&TILECOL={ y}&tk=您的密钥
最终使用示例
var wms = new AMap.TileLayer.WMTS({ url: http://t4.tianditu.gov.cn/img_w/wmts, blend: false, tileSize: 256, params: { Layer: img, Version: 1.0.0, Format: tiles, // TileMatrixSet: EPSG:3857, TileMatrixSet: w, STYLE:default, tk:33ee301e47afe9f06628867abad6bc51 } }); wms.setMap(map);
三、示例解析
1.tk
成功调用服务的关键就在于 params 的参数设置,我用到的是 影像底图(球面墨卡托投影) http://t0.tianditu.gov.cn/img_w/wmts?tk=您的密钥 按照这个示例,很容易在调用时将 tk 写在URL后面,这样是不行的 必须将tk 作为 params 的参数来调用才行
2.params
关于params,高德地图api并不是很详细,但是这个很重要 服务调用成功后,地图瓦片真实路径是这样的 http://t4.tianditu.gov.cn/img_w/wmts?Layer=img&Version=1.0.0&Format=tiles&TileMatrixSet=w&STYLE=default&tk=33ee301e47afe9f06628867abad6bc51&Request=GetTile&Service=WMTS&TileMatrix=10&TileRow=404&TileCol=838 与地图瓦片获取的示例相对比,得出params的其他几个参数设置 说实话,我是知道了结果倒推出过程,api不清楚,真是用起来头大