cesium加载天地图、OSM、谷歌底图


加载天地图

首先打开天地图地图服务,然后申请key。
有两种方法加载天地图分别是WebMapTileServiceImageryProviderUrlTemplateImageryProvider*
第一种:

const imageryProvider = new Cesium.WebMapTileServiceImageryProvider({
                    url: 'http://{s}.tianditu.gov.cn/vec_w/wmts?tk=816517e17d1cc31c6eec03ef9fc4bb5b',
                    layer: "vec",
                    style: "default",
                    format: "tiles",
                    tileMatrixSetID: 'w',
                    subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
                    minimumLevel: 0,
                    maximumLevel: 18,
                    credit: 'Tianditu'
});
viewer.imageryLayers.addImageryProvider(imageryProvider);  //加载矢量底图

第二种:

const imageryProvider = new Cesium.UrlTemplateImageryProvider({
      url: 'http://{s}.tianditu.com/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk=816517e17d1cc31c6eec03ef9fc4bb5b',
      subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
      maximumLevel: 18,
      minimumLevel: 1,
      credit: 'Tianditu'
  });
 viewer.imageryLayers.addImageryProvider(imageryProvider);  //加载矢量底图 

以上示例是加载矢量底图,若要加载影像或者其他只需要更换相应的url,在WebMapTileServiceImageryProvider中还要更改layer参数。url中’‘vec_w’,vec对应底图种类,w对应投影样式,具体可看地图服务页面。两种方法效果差别不大。

加载OSM

const osmImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
    subdomains: ['a', 'b', 'c'], // 子域名列表
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    minimumLevel: 0,
    maximumLevel: 18,
    credit: '© OpenStreetMap contributors'
  });
  viewer.imageryLayers.addImageryProvider(osmImageryProvider ); 

osm基础底图

一些其他风格,基于CRAT渲染,Voyager

const cartoImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png',
    subdomains: ['a', 'b', 'c', 'd'],
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© CartoDB © OpenStreetMap'
});
viewer.imageryLayers.addImageryProvider(cartoImageryProvider );

在这里插入图片描述Positron

const cartoImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://{s}.basemaps.cartocdn.com/rastertiles/light_all/{z}/{x}/{y}{r}.png',
    subdomains: ['a', 'b', 'c', 'd'],
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© CartoDB © OpenStreetMap'
});
viewer.imageryLayers.addImageryProvider(cartoImageryProvider );

在这里插入图片描述
Dark Matter

const cartoImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://{s}.basemaps.cartocdn.com/rastertiles/dark_all/{z}/{x}/{y}{r}.png',
    subdomains: ['a', 'b', 'c', 'd'],
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© CartoDB © OpenStreetMap'
});
viewer.imageryLayers.addImageryProvider(cartoImageryProvider );

在这里插入图片描述

加载谷歌底图

const googleRoadmapImageryProvider = new Cesium.UrlTemplateImageryProvider({
  	url: 'https://mt1.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© Google'
});
viewer.imageryLayers.addImageryProvider(googleRoadmapImageryProvider ); 

在这里插入图片描述
还有谷歌的一些卫星底图
GOOGLE_CUSTOM

const googleRoadmapImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://mt1.google.com/vt/lyrs=custom_layer_id&x={x}&y={y}&z={z}',
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© Google'
});
viewer.imageryLayers.addImageryProvider(googleRoadmapImageryProvider );

在这里插入图片描述
GOOGLE_HYBRID

const googleHybridImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}',
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© Google'
});
viewer.imageryLayers.addImageryProvider(googleHybridImageryProvider);

在这里插入图片描述
GOOGLE_SATELLITE

const googleSatelliteImageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}',
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    maximumLevel: 19,
    credit: '© Google'
});
viewer.imageryLayers.addImageryProvider(googleSatelliteImageryProvider);

在这里插入图片描述

### 如何在 Cesium 中集成并加载 Google Maps 数据 Cesium 是一个强大的开源 JavaScript 库,用于创建 3D 地球和地图可视化效果。然而,默认情况下,Cesium 并不支持直接加载 Google Maps 的瓦片数据,因为 Google 不提供公开的瓦片访问接口供第三方使用。尽管如此,可以通过一些间接方法实现这一目标。 #### 方法一:通过自定义 `WebMapTileServiceImageryProvider` 加载 如果能够获取到 Google Maps 的瓦片 URL(通常需要合法授权),可以利用 Cesium 提供的 `WebMapTileServiceImageryProvider` 来加载这些瓦片图像。以下是具体的代码示例: ```javascript const viewer = new Cesium.Viewer('cesiumContainer'); // 定义 Google Maps 的瓦片服务参数 const imageryLayer = new Cesium.WebMapTileServiceImageryProvider({ url: 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', // 替换为实际可用的URL layer: '', style: '', format: 'image/jpeg', tileMatrixSetID: 'GoogleMapsCompatible', maximumLevel: 18, }); viewer.imageryLayers.addImageryProvider(imageryLayer); ``` 需要注意的是,上述代码中的 `url` 参数仅作为示例展示,并不一定适用于所有场景[^1]。此外,这种方法可能会违反 Google Maps 使用条款,请务必仔细阅读相关协议后再决定是否采用此方案。 #### 方法二:借助第三方中间件转换 另一种更合规的方式是使用第三方工具或服务来桥接 Google Maps 和 Cesium。例如,某些商业平台提供了兼容多种地图源的服务,允许开发者轻松切换不同供应商的数据层。这种方式虽然增加了成本,但却能有效规避法律风险[^3]。 #### 注意事项 无论采取哪种方式,在开发过程中都应严格遵循各服务商的规定与限制条件。对于敏感操作比如抓取外部资源,则需特别谨慎以免触犯版权或其他相关规定。 ```javascript /// 示例仅供参考 实际应用请确保合法性 /// const googleTilesUrl = 'http://your-proxy-service-url/{z}/{x}/{y}.png'; const customProvider = new Cesium.UrlTemplateImageryProvider({ url : googleTilesUrl , }); viewer.scene.globe.imageryLayers.addInstance(new Cesium.ImageryLayer(customProvider)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值