Source和Layer

首先需要明白的一点是,SourceLayer是一对一的关系,有一个Source,必然需要一个Layer,然后把这个Layer添加到Map上,就可以显示出来了。通过官网的API搜索ol.source可以发现有很多不同的Source,但归纳起来共三种:ol.source.Tileol.source.Imageol.source.Vector

  • ol.source.Tile对应的是瓦片数据源,现在网页地图服务中,绝大多数都是使用的瓦片地图,而OpenLayers 3作为一个WebGIS引擎,理所当然应该支持瓦片。
  • ol.source.Image对应的是一整张图,而不像瓦片那样很多张图,从而无需切片,也可以加载一些地图,适用于一些小场景地图。
  • ol.source.Vector对应的是矢量地图源,点,线,面等等常用的地图元素(Feature),就囊括到这里面了。这样看来,只要这两种Source就可以搞定80%的需求了。

从复杂度来分析,ol.source.Imageol.source.Vector都不复杂,其数据格式和来源方式都简单。而ol.source.Tile则不一样,由于一些历史问题,多个服务提供商,多种标准等诸多原因,导致要支持世界上大多数的瓦片数据源,就需要针对这些差异提供不同的Tile数据源支持。在更进一步了解之前,我们先来看一下OpenLayers 3现在支持的Source具体有哪些: 

上图中的类是按照继承关系,从左向右展开的,左边的为父类,右边的为子类。在使用时,一般来说,都是直接使用叶子节点上的类,基本就可以完成需求。父类需要自己进一步扩展或者处理才能有效使用的。

我们先了解最为复杂的ol.source.Tile,其叶子节点类有很多,大致可以分为几类:

  • 在线服务的Source,包括ol.source.BingMaps(使用的是微软提供的Bing在线地图数据),ol.source.MapQuest(使用的是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而言,真是太简单了。

时间: 2024-10-10 17:05:16

Source和Layer的相关文章

OpenLayers 之 地图图层数据来源(ol.source)详解

source 是 Layer 的重要组成部分,表示图层的来源,也就是服务地址.除了在构造函数中制定外,可以使用 layer.setSource(source) 稍后指定. 一.包含的类型 ol.source.BingMaps ,必应地图的切片数据,继承自ol.source.TileImage: ol.source.Cluster,聚簇矢量数据,继承自ol.source.Vector: ol.source.ImageCanvas,数据来源是一个 canvas 元素,其中的数据是图片,继承自 ol.

OpenLayers 之 图层(Layers) 详解

声明:文章为本人原创,转载或使用请注明作者和出处!!谢谢! 如果不是专业的地图工作者,看到地图,可能觉得地图就是一张将三维世界映射到二维空间,很多信息混杂在一起表示空间信息的动态可交互图片,其实这只是表面现象.实际上地图是由一个或多个图层组成的,使用不同的图层存储不同类型的地物,比如由存储道路的图层,有展示拥堵情况的图层,通常还有一个含有基础地理信息(比如政区划分)的底图图层. 在 OpenLayers 中,图层是使用 layer 对象表示的,主要有 热度图层(heatmaplayer).图片图

hdu_1565(网络流)

解法一.网络流 相邻的点染不同颜色: (行数+列数)为奇数的染成白色,(行数+列数)为偶数的染成白色 source = 0, sink = n*n+1. source到每个白点连接,流量为白点的值 黑点到sink连接,流量为黑点的值 每个白点与其周围的黑点连接,流量为INT_MAX 所有点的值的总和 - 最大流量 = 所求答案 以下是抄来的原理: 点覆盖集:无向图G的一个点集,使得该图中所有边都至少有一个端点在该集合内. 最小点权覆盖集:在带点权无向图G中,点权之和最小的覆盖集. 点独立集:无向

[html/js]点击标题出现下拉列表

效果 初始 点击后 参考代码 <!DOCTYPE html> <html> <head> <title>Layer group example</title> <script src="js/jquery-1.11.1.min.js"></script> <link rel="stylesheet" href="css/bootstrap.min.css"&

Openvswitch原理与代码分析(4):网络包的处理过程

? 在上一节提到,Openvswitch的内核模块openvswitch.ko会在网卡上注册一个函数netdev_frame_hook,每当有网络包到达网卡的时候,这个函数就会被调用. ? static struct sk_buff *netdev_frame_hook(struct sk_buff *skb) { ???if (unlikely(skb->pkt_type == PACKET_LOOPBACK)) ??????return skb; ? ???port_receive(skb)

动态标绘演示系统1.0(for OpenLayers3)

实现OpenLayers3(http://openlayers.org)版本号的动态标绘API.眼下1.0版本号,仅支持简单符号绘制. 在线体验地址:http://gispace.duapp.com/plot4ol3 演示样例代码下载: 点击进入下载页 演示样例代码例如以下: var map, plotDraw, drawOverlay, drawStyle; function init(){ // 初始化地图.底图使用openstreetmap在线地图 map = new ol.Map({ t

ios考试题

※ 选择题(共40题,每题2分) 1.我们输出MD5值的时候,选用的是什么进制输出的? 答案:(D)    A.2    B.8    C.10    D.16 2.下列哪些不属于CALayer属性 答案:(D)    A.CornerRadius    B.ShadowOpacity    C.anchorPoint    D.CGColor 3.有下列枚举类型代码 enum ProductCategory {case Washers , Dryers, Toasters} var produ

【吐槽】我只想说,caffe的最新版本做的真尼玛SHI一样难看

添加个layer麻烦的要死啊!有木有! 还有,看看下面的代码! 丑不丑! if (v0_layer_connection.has_layer()) { const V0LayerParameter& v0_layer_param = v0_layer_connection.layer(); if (v0_layer_param.has_name()) { layer_param->set_name(v0_layer_param.name()); } const string& typ

H.264视频的RTP荷载格式

Status of This Memo This document specifies an Internet standards track protocol for the   Internet community, and requests discussion and suggestions for   improvements.  Please refer to the current edition of the "Internet   Official Protocol Stand