openlayer : 地图 : openlayer 加载互联网地图(谷歌地图/天地图) 和 遇到的问题

本文详细介绍了如何使用OpenLayers加载天地图的地图服务,包括电子地图、卫星影像图及文字标注图层。解决了常见问题如权限类型错误、文字标注加载失败及卫星影像图显示异常等,同时提供了完整的代码示例。

 

1、怎么部署地图服务的?

 

2、openlayer 怎么连接 互联网地图? 

 

   互联网地图是不是可以看出服务器是别人的而已,把原本的ip改成别人的ip就可以了。其他的不变?

 

3、报错:418

参考:天地图API及服务接口调用418错误

天地图官网 : https://www.tianditu.gov.cn/

天地图key:https://console.tianditu.gov.cn/api/key

注册好个人账户,并且新建一个应用后,获取对应的key后报错:

http://t0.tianditu.com/DataServer?T=vec_w&X=3&Y=2&L=2&tk=我的key

{"msg":"权限类型错误","r
<think> 我们正在讨论Cesium中可加载的在线地图服务类型。根据提供的引用,我们已经知道Cesium可以加载ArcGIS地图天地图(Tian Di Tu)。现在,用户希望了解除此之外的其他在线地图服务。 在Cesium中,加载地图主要是通过`ImageryProvider`类来实现的。Cesium支持多种类型的ImageryProvider,每种对应不同的地图服务。 以下是一些常见的在线地图服务,Cesium都可以通过相应的ImageryProvider加载: 1. **OpenStreetMap**:使用`OpenStreetMapImageryProvider`可以加载OSM地图。 2. **Bing地图**:使用`BingMapsImageryProvider`需要提供Bing地图Key。 3. **Google Earth**:Google Earth Enterprise可以使用`GoogleEarthEnterpriseImageryProvider`加载。 4. **Mapbox**:使用`MapboxImageryProvider`,需要提供access token。 5. **WMS服务**:使用`WebMapServiceImageryProvider`可以加载符合OGC WMS标准的地图服务。 6. **WMTS服务**:使用`WebMapTileServiceImageryProvider`可以加载WMTS服务(如天地图)。 7. **XYZ瓦片服务**:使用`UrlTemplateImageryProvider`可以加载任何XYZ格式的瓦片地图,比如很多在线地图都支持这种格式。 8. **高德地图(Amap)**:可以通过`UrlTemplateImageryProvider`自定义URL模板来加载。 9. **腾讯地图**:同样可以通过`UrlTemplateImageryProvider`加载。 注意:对于国内的地图服务(如高德、腾讯、天地图等),由于坐标系可能有差异(例如使用GCJ-02或BD-09坐标系),在加载时可能需要使用特定的tilingScheme(如`WebMercatorTilingScheme`或`GeographicTilingScheme`)以及进行坐标转换。 下面我们给出几个示例代码: 1. 加载OpenStreetMap: ```javascript viewer.imageryLayers.addImageryProvider(new Cesium.OpenStreetMapImageryProvider({ url: 'https://a.tile.openstreetmap.org/' })); ``` 2. 加载Bing地图(需要key): ```javascript viewer.imageryLayers.addImageryProvider(new Cesium.BingMapsImageryProvider({ url: 'https://dev.virtualearth.net', key: 'your Bing Maps Key', mapStyle: Cesium.BingMapsStyle.AERIAL })); ``` 3. 加载WMS服务: ```javascript viewer.imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({ url: 'https://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer', layers: '0', parameters: { transparent: true, format: 'image/png' } })); ``` 4. 加载高德地图(影像图): ```javascript // 注意:高德地图使用的是Web墨卡托投影,因此使用WebMercatorTilingScheme,并且需要加上缩放等级、行列号等参数 viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ url: 'https://webst0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', subdomains: ['1','2','3','4'], tilingScheme: new Cesium.WebMercatorTilingScheme(), maximumLevel: 18 })); ``` 5. 加载腾讯地图(地形图): ```javascript viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ url: 'http://rt0.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=0', tilingScheme: new Cesium.WebMercatorTilingScheme(), maximumLevel: 18 })); ``` 注意:以上示例中,腾讯地图的URL中的`{-y}`表示使用TMS标准的Y轴(与XYZ标准的Y轴相反)。 总结:Cesium支持加载多种在线地图服务,包括但不限于上述列举的几种。只要地图服务提供符合标准的服务接口(如WMTS、WMS、XYZ等),都可以在Cesium中加载。 另外,用户也可以使用第三方库(如proj4)来支持更多的坐标系,或者对已有地图服务进行坐标转换。 相关问题: 1. 如何在Cesium中加载百度地图? 2. Cesium加载在线地图时如何解决跨域问题? 3. Cesium中如何叠加多个不同的地图服务? 4. Cesium加载地图服务时如何设置最大最小缩放级别? 5. 如何为Cesium地图服务添加版权信息? </think> 在Cesium中,除了ArcGIS地图天地图(Tian Di Tu)外,还可加载多种在线地图服务。以下是常用的在线地图类型及实现方式: ### 1. **瓦片地图服务(TMS/XYZ)** 通过`UrlTemplateImageryProvider`加载标准XYZ瓦片服务: ```javascript // OpenStreetMap 示例 viewer.imageryLayers.add(Cesium.createOpenStreetMapImageryProvider({ url: 'https://{s}.tile.openstreetmap.org/' })); // 自定义XYZ服务(如高德、腾讯等) new Cesium.UrlTemplateImageryProvider({ url: "https://mt{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}", subdomains: ['0','1','2','3'] }) ``` ### 2. **WMTS服务** 通过`WebMapTileServiceImageryProvider`加载(如自然资源部地图): ```javascript new Cesium.WebMapTileServiceImageryProvider({ url: "https://service.cnpm.com.cn/wmts", layer: "terrain", style: "default", tileMatrixSetID: "EPSG:3857", format: "image/png" }) ``` ### 3. **WMS服务** 通过`WebMapServiceImageryProvider`加载OGC标准服务: ```javascript new Cesium.WebMapServiceImageryProvider({ url: 'https://geoserver.example.com/wms', layers: 'topo,roads', parameters: { transparent: true, format: 'image/png' } }) ``` ### 4. **Bing地图** 需使用Bing Maps API密钥: ```javascript viewer.imageryLayers.add(new Cesium.BingMapsImageryProvider({ url: 'https://dev.virtualearth.net', key: 'your_bing_key', mapStyle: Cesium.BingMapsStyle.AERIAL })); ``` ### 5. **Mapbox** 需配置access token: ```javascript new Cesium.MapboxImageryProvider({ mapId: 'mapbox.satellite', accessToken: 'your_mapbox_token' }) ``` ### 6. **特殊坐标系地图** 对于非WGS84坐标系(如CGCS2000),需指定`tilingScheme`: ```javascript new Cesium.WebMapTileServiceImageryProvider({ // ...其他参数 tilingScheme: new Cesium.GeographicTilingScheme({ ellipsoid: Cesium.Ellipsoid.CGCS2000 // 自定义坐标系 }) }) ``` --- ### 支持的主要地图类型汇总 | 地图类型 | 服务商示例 | Cesium ImageryProvider | |----------------|----------------------------------|-------------------------------------| | **标准XYZ** | OSM, Google, 高德, 腾讯 | `UrlTemplateImageryProvider` | | **WMTS** | 自然资源部, 各省天地图 | `WebMapTileServiceImageryProvider` | | **WMS** | GeoServer, MapServer | `WebMapServiceImageryProvider` | | **专有服务** | Bing Maps, Mapbox | `BingMapsImageryProvider`等 | | **离线/自定义**| 本地瓦片服务 | `UrlTemplateImageryProvider` | --- ### 关键技术点 1. **跨域问题**:若服务端未设置CORS,需通过代理解决 2. **坐标系适配**: - 全球地图使用`WebMercatorTilingScheme` - 中国区域常用`GCJ-02`或`CGCS2000`,需自定义`tilingScheme` 3. **性能优化**: - 设置`maximumLevel`限制最大缩放级别 - 使用`credit`参数声明版权信息避免水印遮挡 > 示例中引用的天地图参数配置展示了省级地图的特殊处理方式[^2],其他服务可参考类似逻辑调整切片规则。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值