• 天地图服务地址


    瓦片地址如下(以矢量底图为例):http://t0.tianditu.cn/DataServer?T=vec_c&X=210&Y=106&L=8

    确定服务地址

           天地图共有 8 个服务地址,子域名分别从 t0 到 t7,如下列表所示。获取的方法和上一篇中获取百度地图服务地址是一样的,F12 查看了浏览器的通信信息:

    • http://t0.tianditu.com/DataServer?
    • http://t1.tianditu.com/DataServer?
    • http://t2.tianditu.com/DataServer?
    • http://t3.tianditu.com/DataServer?
    • http://t4.tianditu.com/DataServer?
    • http://t5.tianditu.com/DataServer?
    • http://t6.tianditu.com/DataServer?
    • http://t7.tianditu.com/DataServer?

      加载路网

             我们查看一个路网切片的 url 地址: http://t4.tianditu.com/DataServer?T=vec_c&x=3233&y=673&l=12,一共有四个参数,T=vec_c表示请求的是路网数据,x 表示切片的 x 轴坐标,y 表示切片的y轴坐标,z表示切片所在的缩放级别。我们使用 ol.source.XYZ 加载切片,并将获取的数据初始化一个切片图层 ol.layer.Tile

      var tian_di_tu_road_layer = new ol.layer.Tile({
          title: "天地图路网",
          source: new ol.source.XYZ({
              url: "http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}"
          })
      });
      map.addLayer(tian_di_tu_road_layer);

             我们可以看到 ol.source.XYZ 有一个 url 参数,表示切片地址的模板: http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z},在使用 OpenLayers 时候,用户的操作都会被转化为相应的x、y、z值,并赋予地址模板,这样就可以根据用户的操作请求需要的切片了。

             加载完成后,发现只有路网图片,并没有路段的名称等注记层,我们并没有做错什么,只是天地图是将路网图层和注记图层分开发布的,我们还要单独请求注记图层,然后叠加在路网上面,才会看到和百度地图一样的效果:

    加载注记图层

           使用同样的方法,加载注记图层,可以看到其 url 参数中,只有 T 参数变化了,cva_w 表示请求的切片类型是注记图层切片:

    var tian_di_tu_annotation = new ol.layer.Tile({
        title: "天地图文字标注",
        source: new ol.source.XYZ({
            url: 'http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}'
        })
    });
    map.addLayer(tian_di_tu_annotation);

    通过加载路网和注记图层后,我们就可以看到效果了: 

            我们可以想象,注记图层应该是一个除了文字之外都是透明的 PNG 格式的图片,接下来我们就来加载注记图层:

    加载卫星影像

           天地图除了路网数据和注记数据之外,还有卫星影像切片数据,所以我们可以使用同样的方法加载卫星影像,同样, url 参数中的 T参数值 img_w 表示请求的数据类型是卫星影像切片。代码和效果图如下:

    var tian_di_tu_satellite_layer = new ol.layer.Tile({
        title: "天地图卫星影像",
        source: new ol.source.XYZ({
            url: 'http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}'
        })
    });
    map.addLayer(tian_di_tu_satellite_layer);

     天地图服务参数

    要想成功访问WMTS服务,需要为TiledWMTSLayer设置的参数有:WMTS服务地址(url)、要访问的图层名称(layerName)、访问方式(requestEncoding)和当前图层(layerName)的具体信息参数。

    如某一切片地址为:

    http://t0.tianditu.com/vec_c/wmts?service=wmts&request=gettile&version=1.0.0&layer=vec&STYLE=default&tilematrixset=c&tilematrix=3&tilerow=2&tilecol=4&format=tiles

    其中http://t0.tianditu.com/vec_c/wmts?  为图层服务器地址

    其他参数为:

    GetCapabilities、Gettile

  • 相关阅读:
    socket的半包,粘包与分包的问题
    /dev/tty /dev/ttyS0 /dev/tty0,/dev/null区别
    23种设计模式小结
    嵌入式试题
    怎样给filter加入自己定义接口及调用
    实现Launcher默认壁纸、选择壁纸定制化功能
    javascript中的稀疏数组(sparse array)和密集数组
    【Linux学习】Linux的文件权限(一)
    HDU--5280(dp或枚举)
    UISegmentedControl UISlider
  • 原文地址:https://www.cnblogs.com/lishanyang/p/9155343.html
Copyright © 2020-2023  润新知