无锡2019网站建设报价清单,学校网站建设代码,网站制作模板下载,f2c网站建设1.source和layer的概念
在前面的例子中#xff0c;已经对Source和Layer有所了解了#xff0c;我们用天地图为底图加载出来东西#xff0c;但是这个世界上的地图不仅仅是有天地图一种类型#xff0c;比如Google地图#xff0c;高德地图#xff0c;百度地图等#xff0c;…1.source和layer的概念
在前面的例子中已经对Source和Layer有所了解了我们用天地图为底图加载出来东西但是这个世界上的地图不仅仅是有天地图一种类型比如Google地图高德地图百度地图等如果OpenLayers支持的地图来源越多就会越适用越强大。除了加载基本的地图之外GIS还需要加载很多其他的信息比如街道名称商店名称公交站点道路等等。那么在OpenLayers 中具体该如何把这些添加在地图上呢
首先需要明白的一点是Source和Layer是一对一的关系有一个Source必然需要一个Layer然后把这个Layer添加到Map上就可以显示出来了。通过官网的API搜索ol.source可以发现有很多不同的Source但归纳起来共三种ol.source.Tileol.source.Image和ol.source.Vector
ol.source.Tile对应的是瓦片数据源现在网页地图服务中绝大多数都是使用的瓦片地图而OpenLayers作为一个WebGIS引擎理所当然应该支持瓦片。ol.source.Image对应的是一整张图而不像瓦片那样很多张图从而无需切片也可以加载一些地图适用于一些小场景地图。ol.source.Vector对应的是矢量地图源点线面等等常用的地图元素(Feature)就囊括到这里面了。这样看来只要这两种Source就可以搞定80%的需求了
从复杂度来分析ol.source.Image和ol.source.Vector都不复杂其数据格式和来源方式都简单。而ol.source.Tile则不一样由于一些历史问题多个服务提供商多种标准等诸多原因导致要支持世界上大多数的瓦片数据源就需要针对这些差异提供不同的Tile数据源支持。在更进一步了解之前我们先来看一下OpenLayers现在支持的Source具体有哪些 上图中的类是按照继承关系从左向右展开的左边的为父类右边的为子类。在使用时一般来说都是直接使用叶子节点上的类基本就可以完成需求。父类需要自己进一步扩展或者处理才能有效使用的
我们先了解最为复杂的ol.source.Tile其叶子节点类有很多大致可以分为几类
在线服务的Source包括ol.source.BingMaps(使用的是微软提供的Bing在线地图数据)ol.source.MapQuest(使用的是MapQuest提供的在线地图数据)(注: 由于MapQuest开始收费ol v3.17.0就移除了ol.source.MapQuest)ol.source.OSM(使用的是Open Street Map提供的在线地图数据)ol.source.Stamen(使用的是Stamen提供的在线地图数据)。没有自己的地图服务器的情况下可直接使用它们加载地图底图。支持协议标准的Source包括ol.source.TileArcGISRestol.source.TileWMSol.source.WMTSol.source.UTFGridol.source.TileJSON。如果要使用它们首先你得先学习对应的协议之后必须找到支持这些协议的服务器来提供数据源这些服务器可以是地图服务提供商提供的也可以是自己搭建的服务器关键是得支持这些协议。ol.source.XYZ这个需要单独提一下因为是可以直接使用的而且现在很多地图服务在线的或者自己搭建的服务器都支持xyz方式的请求。国内在线的地图服务高德天地图等都可以通过这种方式加载本地离线瓦片地图也可以用途广泛且简单易学需要掌握。
ol.source.Image虽然有几种不同的子类但大多比较简单因为不牵涉到过多的协议和服务器提供商。而ol.source.Vector就更加的简单了但有时候其唯一的子类ol.source.Cluster在处理大量的Feature时我们可能需要使用。
在大概了解了整个Source之后紧接着该介绍它的搭档Layer了同样的我们还是先从OpenLayers 3现有的Layer类图大致了解一下 为了便于了解和使用图中标注了每一个Layer对应的Source。通过上图可以看到Layer相对于Source而言真是太简单了。