除栅格数据外,GIS系统中另一类重要的数据类型便是矢量数据。OpenLayers中提供了多种操作矢量数据的方式,可以处理不同数据源、不同协议(HTTP、WFS)、不同格式(GML、KML、GeoJSON、GeoRSS等)的矢量数据。涉及的主要操作类包括OpenLayers.Layer.Vector、OpenLayers.Feature.Vector、OpenLayers.Feature、OpenLayers.Geometry、OpenLayers.Protocol等。
调用GML图层
GeographyMarkup Language (GML)是一个已经被广泛采纳了的OGC标准,采用XML语法来描述地理要素。下面的方法可以从GML文件创建矢量图层。
1.创建HTML文件,引入OpenLayers开发包,插入如下代码:
<!-- Map DOM element -->
<div id="gml"style="width: 100%; height: 100%;"></div>
2. 接下来,创建地图实例对象,添加图层和相应控件。这里展示了OpenStreetMap的调用方法,实际应用中应按照前面所讨论的方法调用自己的地图。在使用不同的地图作为底图的过程中,应注意区分投影与否,以及不同投影、不同坐标系等空间参考。
<!-- The magic comes here-->
<scripttype="text/javascript">
//Create the map using the specified DOM element
varmap = new OpenLayers.Map("gml");
varlayer = new OpenLayers.Layer.OSM("OpenStreetMap");
map.addLayer(layer);
map.addControl(newOpenLayers.Control.LayerSwitcher());
map.setCenter(newOpenLayers.LonLat(0,0), 2);
3.读取GML文件,并转换为矢量图层添加至map中:
map.addLayer(newOpenLayers.Layer.Vector("Europe (GML)", {
protocol:new OpenLayers.Protocol.HTTP({
//指向特定GML文件的URL
url:"http://.../.../....gml",
format:new OpenLayers.Format.GML()
}),
strategies:[new OpenLayers.Strategy.Fixed()]
}));
</script>
KeyholeMarkup Language (KML)是另一种描述地理要素的矢量格式,源自于GoogleMaps,现在也已经变成了OGC的一种标准。
1.创建HTML文件,引入OpenLayers开发包,插入如下代码:
<!-- Map DOM element -->
<div id="kml"style="width: 100%; height: 100%;"></div>
2. 接下来,创建地图实例对象,添加图层和相应控件。
<!-- The magic comes here-->
<scripttype="text/javascript">
//Create the map using the specified DOM element
varmap =