在实际项目中经常会遇到自定义图层和地图控件的需求,首先就需要获取到图层和地图相关的数据,mars3d都提供了相关的api来满足此类操作。这里先以实际项目中的地图控制为例来学习一下相关的api使用。

    1. // 首先初始化地图
    2. map = new mars3d.Map("map-container", option)
    3. // 直接调用getBasemaps就可以获取地图相关数据
    4. const baseMaps = map.getBasemaps()

    此时已经拿到了底图的相关数据,但是同时也拿到了,不包含图层的一些数据,这些数据可能是底图图层的父容器或者其他非地图渲染类的需求而配置的,在实现底图控件是可能不需要此类数据,通过查阅api文档了解到,getBasemaps方法支持一个参数,如下:
    image.png
    所以上面代码改为

    1. // 首先初始化地图
    2. map = new mars3d.Map("map-container", option)
    3. // 直接调用getBasemaps就可以获取地图相关数据
    4. const baseMaps = map.getBasemaps(true)

    类似的,如果需要获取图层数据,可以参考getLayers的api文档
    image.png
    通过上述两个方法和其相关配置,就可以实现一个自己的图层或者地图的控制器了。