geoserver发布瓦片_IOS Mapbox 加载自定义数据WMS、WMTS、矢量瓦片以及添加层时无法透明解决...

4ade00182a0fcbb2da1fdf600f72d675.png

IOS Mapbox 加载自定义数据WMS、WMTS、矢量瓦片以及添加层时无法透明解决

初始底图加载WMS、WMTS、矢量瓦片均需要创建json文件,并编写相关字典样式才可加载.

关于其属性详情,请阅读官方文档:https://docs.mapbox.com/mapbox-gl-js/style-spec/

json文件样式:

9d5677e71c67828a8d25d731514fef10.png

我使用的geoserver发布图片服务.

关于WMS有几点需要注意:

  1. 关于url坐标系,不论你发布的是4326还是3857,这边srs均设置为3857,mapbox会自动转换投影.
  2. 关于url坐标范围bbox,mapbox有自己的读取机制,需改成{bbox-epsg-3857}固定值.(如果需要限制范围,可设置"bounds"属性,"center"中心点,"zoom"当前层级)
  3. 如果显示较模糊,可以将"tileSize":256,并且将"width""height"均设置256

关于矢量瓦片:

  1. x/y/z 均用 {x}/{y}/{z} 根据你自己的url排列顺序 (如果你的url里的坐标系有需要自己计算的属性,比如x/y/z/23123.png,我这边是让后台布置了一个转换,我只传x/y/z,然后由后台计算帮我获取瓦片图片)

代码使用:

是一个懒加载的MGLMapView类,并添加到self.view

8d8b07f4b8478dd8518ed96ad41811cb.png

可以通过MGLMapViewDelegate方法来监察样式是否加载完毕

44711ee8eaf67f4c4d736dc8b7a100b2.png

需要注意:

如果要隐藏mapbox自带logo和按钮,需要在info文件实现MGLMapboxMetricsEnabledSettingShownInApp 为 YES

加载WMS、WMTS、矢量瓦片显示层(也就是说在地图的基础上再添加一层)

使用MGLRasterTileSource数据源和MGLRasterStyleLayer光栅样式层来添加, 移除的话先移除层,再移除数据源,不然会报错.

19b69bce5dfd78576f51513c93d05a47.png

"identifier"为该对象的唯一标示,可以通过style来找到已经生成的图层与数据源

f8bad21b7beedb9f32ecd4d1fa5c5c52.png

"URLTemplates"需要传一个url数组,可以传多个.

"options"为属性设置,点进去查看有很多属性,查看用法,灵活运用.(包括坐标不对应,坐上Y加载顺序与左下Y加载属性加载) 我所设置的MGLTileSourceOptionTileSize属性是为了让显示图层数据看起来更精细些.

注意:

每一个唯一标识只能创建一个对象,多次创建或报错. (这点和创建图斑层是一样的)

关于使用WMS加载显示层的问题:

后台明明已经把底层设置透明了,为什么还是加载有底层呢? 为什么矢量瓦片就是透明呢?

解决:将wms的url添加一个属性"transparent=true",就完美解决了. (如果没有底色透明,就让后台看一下,他是否将底层设置透明了)

cbf99a0331e54b13b00b561e407faece.png

以上就是该部分内容的分享,由于网上关于mapbox的内容较少,我有时间会继续更新一些用法的. (有问题可以留言交流讨论哦!)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值