结合API文档分析代码

这次,有了API文档这个利器,必然会对代码有更深入的理解和认识。让我们再一次回顾之前那个简单的地图的代码:

        // 创建地图
      new ol.Map({
            // 设置地图图层
            layers: [
              // 创建一个使用Open Street Map地图源的瓦片图层
              new ol.layer.Tile({source: new ol.source.OSM()})
            ],
            // 设置显示地图的视图
            view: new ol.View({
              center: [0, 0],    // 定义地图显示中心于经度0度,纬度0度处
              zoom: 2            // 并且定义地图显示层级为2
            }),
            // 让id为map的div作为地图的容器
            target: 'map'    
        });

之前我们并不知道ol.Map类具体有什么构造参数,也不知道参数值可以设置什么类型的对象等等,现在就可以通过API文档查看。通过API文档可以看到,构造参数远不止上面代码中设置的这些参数,还存在很多其他的参数。这些参数在文档中注明是可以不设置的,OpenLayers3 会自动使用特定的默认值。通过这些参数,你是否已经发现它们其实就是地图的组成部分。为什么有些参数可以不设置而使用默认值,而有些参数就必须设置呢?请自行思考。

文档显示ol.Map的构造参数layers,可以是ol.Collection,也可以是Javascript数组,此处用了数组。我们统称为容器类型,包含的元素为ol.layer.Base类型。但代码里面创建了一个ol.layer.Tile类的实例,这样也行?通过API文档中的继承关系信息,我们可以了解到ol.layer.Tile继承于ol.layer.Layer,而ol.layer.Layer又继承于ol.layer.Base,所以这是可行的。

,若对ol.layer.Tile不了解,请使用API文档,在此之前,我们也可以通过包名大致推断出它是一个layer,属于地图层的一种。官网API文档说明:它是一种应用瓦片图片作为地图源的地图层。构造函数的参数里包含一个必须设置值的属性:source,用于设置地图源,类型为ol.source.Tile,但是代码里使用的是ol.source.OSM,这个问题同上,请自行查询API文档解答吧。注意,LayerSource就是这样绑定在一起的。有什么样的Layer,就需要什么样的Source,看起来是Layer决定Source,其实Layer是为Source服务的,还是之前说的那样,数据才是最重要的。所以应该是Source起决定作用,根据需要构造对应的Layer。为此在做开发时,应该优先考虑需要什么样的Source。这个也可以通过API文档来查找,搜索ol.source即可查看到现有哪些不同类型的source,在结果中逐个查看,直到找到需要的source类。假设找到了ol.source.Test,那么要找layer就简单了,一般情况下,会有ol.layer.Test。 如果没有,请查找ol.source.Test的父类对应的layer,以此类推。

参数View是一个必须设置的属性,对应于ol.View类,通过官网API了解详细信息,顺便详细看看它的构造参数中的centerzoom表示什么?View至关重要,后续将更深入的了解。

认真查看API文档,可以发现一些你意想不到的东西,从而有所启发,或学到新知识,或排忧解难,所以请重视API文档。至此,你应该对上面的代码有了非常深入的理解了,此时不妨试试修改一些参数的值,查看地图有什么变化。