Skip to content

底图(瓦片图层)

瓦片图层一般用于背景,作为最基础的参考图层

常见的全球视野的底图切图参数(Google/AMap 等)

TIP

这里只是做个简单的科普,这些参数主要用来和自定义切图对比,方便查找对应的比例尺对应关系. 切图参数详情

  • 全球墨卡托

  • 切图原点: [-20037508.342787,20037508.342787]

    层级分辨率比例尺
    0156543.03392800014591657527.591555
    178271.51696399994295828763.795777
    239135.75848200009147914381.897889
    319567.87924100001773957190.948944
    49783.93962050000836978595.474472
    54891.96981025000418489297.737236
    62445.9849051250029244648.868618
    71222.9924525625014622324.434309
    8611.49622628125052311162.217155
    9305.748113140625261155581.108577
    10152.87405657031263577790.554289
    1176.43702828515632288895.277144
    1238.21851414257816144447.638572
    1319.1092570712890872223.819286
    149.5546285356445436111.909643
    154.7773142678222718055.954822
    162.3886571339111359027.977411
    171.19432856695556744513.988705
    180.59716428347778372256.994353
  • 代码里怎样生成切片分辨率数组?

js
const resolutions = [];
//假设切到zoom=18层级
for (let i = 0; i <= 18; i++) {
  resolutions.push(156543.03392800014 / Math.pow(2, i));
}
console.log(resolutions);
//output:[156543.03392800014, 78271.51696400007, 39135.758482000034, 19567.879241000017, 9783.939620500008, 4891.969810250004, 2445.984905125002, 1222.992452562501, 611.4962262812505, 305.74811314062526, 152.87405657031263, 76.43702828515632, 38.21851414257816, 19.10925707128908, 9.55462853564454, 4.77731426782227, 2.388657133911135, 1.1943285669555674, 0.5971642834777837]

怎样选择底图

  • 底图的选择一般有项目的业务数据决定,比如客户提供的天地图的数据我们就用天地图,百度的就用百度的底图,高德的数据就选择高德的底图,依次类推,但是不是必须的,如果选择的底图和 业务数据不匹配,我们就需要进行坐标转换,我们也提供了坐标转换工具类 YY.CoordTransUtil
js
    //这里演示了将wgs84的坐标转换为高德(火星)的坐标
    let lnglats = YY.CoordTransUtil.transformWGS84ToAmap([120, 31]);

    let lnglats = YY.CoordTransUtil.transformWGS84ToAmap(point.getLngLat());

    let lnglats = YY.CoordTransUtil.transformWGS84ToAmap([
        [120, 31],
        [122, 22]
    ]);

    let lnglats = YY.CoordTransUtil.transformWGS84ToAmap(polyline.getLngLats()):

    let lnglats = YY.CoordTransUtil.transformWGS84ToAmap([
            [
                [120, 31],
                [122, 22],
                [133, 33]
            ],
            [......]
    ]));

    let lnglats = YY.CoordTransUtil.transformWGS84ToAmap(polygon.getLngLat());

警告 建议

在自己的业务里最好使用高德或者天地图,不建议使用百度,因为百度太过特立独行,其数据和任何厂商都不兼容

怎样加载客户提供的底图

js
const url =
  "https://bigdata.map512.cn/OneMapServer/rest/services/SpaceTimeBigData_DZDT_CGCS2000_2021/MapServer/tile/{z}/{y}/{x}";
const res = [];
for (let i = 0; i <= 13; i++) {
  res.push(0.010986328125000003 / Math.pow(2, i));
}
const crs = {
  code: "EPSG:4326",
  origin: [-180, 90],
  resolutions: res,
};

const tileLayer = YY.LayerLookup.createTileLayer(
  url,
  {
    maxBounds: [
      [118.1745797805671, 30.40783075450395],
      [123.07566153741475, 33.21458427608011],
    ],
    preview: "../../../../assets/images/3.png",
  },
  crs
);

map.addBaseLayer(tileLayer);
  • 如果客户提供的不是服务,而只是数据,需要我们进行数据加工,并发布成服务,相关详情咨询我

关于底图的分类

  • 目前我们常见的底图有天地图,高德,百度,Google,客户自己的底图(一般为 ESPG:4326, China 2000(EPSG:4490)), 其中 EPSG:4326 和 china 200 的误差可以忽略不计,我们将这两个归为一类

    分类坐标系备注
    天地图的和客户提供的为 WGS84 的归为一类2000 坐标系一般在内网使用
    高德,腾讯, Google 的为火星坐标归为一类火星坐标系一般外网使用
    百度的为 BD09 坐标系统化为一类百度坐标系不建议使用

内网内怎样加载底图

  • 只要内网内有相关底图服务就可以了。最好是客户自己提供的服务, 如果客户自己只是提供了数据,我们可以将其发布成服务

    TIP

    如果客户是么都没有我们也可以提供矢量切片底图服务,联系方式 mehudeyi@163.com

怎样只加载特定区域的底图

js
const map = new YY.Map("map", {
  centerCross: true,
  // bearing:-90,
  center: [120.62048060065308, 31.014128033976903],

  zoom: 11,
  // minZoom:4
});

map.on("click", function (e) {
  console.log(e);
});

const amapTileLayer = YY.LayerLookup.lookup("amap");

const features = szAreas.features;
features.forEach((element) => {
  const name = element.properties.name;
  if (name.indexOf("吴江") >= 0) {
    let coordinates = element.geometry.coordinates;
    coordinates = YY.CoordTransUtil.transformWGS84ToAmap(coordinates); //wgs84 转 高德
    const mask = new YY.Polygon(coordinates);
    amapTileLayer.setMask(mask);
  }
});

map.addBaseLayer(amapTileLayer);

This document is generated by vitepress and Edit by deyihu