OpenLayers中加载矢量切片,可有效解决大数据量的问题
2013-1-6 14:55| 发布者: fengl| 查看: 32155| 评论: 17
摘要: 1.首先我们对矢量数据进行切片 可使用tilestachehttp://www.openlayers.cn/forum.php?mod=viewthreadtid=141这个是预先切好的数据也可以实时去获取切片数据(使用OL-- utfgrid)详见http://blog.perrygeo.net/2012/0 ...
1.首先我们对矢量数据进行切片 可使用tilestache http://www.openlayers.cn/forum.php?mod=viewthread&tid=141这个是预先切好的数据 也可以实时去获取切片数据(使用OL-- utfgrid)详见http://blog.perrygeo.net/2012/02 ... ers-and-tilestache/
2.下面讲下在Openlayers中如何加载预先切好的数据
添加OL的策略拓展文件 OpenLayers.Strategy.Grid.js
Grid.zip
加载图层:
[代码]js代码:
01 |
var style = new OpenLayers.Style();
|
02 |
var ruleAmenity = new OpenLayers.Rule({
|
03 |
symbolizer: {fillColor: 'none', strokeOpacity: 0, pointerEvents: 'all'}
|
06 |
style.addRules([ruleAmenity]);
|
07 |
var styleMap = new OpenLayers.StyleMap({
|
09 |
'select': new OpenLayers.Style({
|
15 |
var baseName = "http://localhost/basicmap/data/${z}/${x}/${y}";
|
16 |
format = new OpenLayers.Format.GeoJSON();
|
17 |
strategy = new OpenLayers.Strategy.Grid();
|
18 |
protocol = new OpenLayers.Protocol.HTTP({
|
19 |
url: baseName + ".geojson",
|
22 |
vectors = new OpenLayers.Layer.Vector("Vector", {
|
23 |
strategies: [strategy],
|
26 |
projection: new OpenLayers.Projection("EPSG:4326")
|
28 |
this.map.addLayer(vectors);
|
32 |
var select = new OpenLayers.Control.SelectFeature(vectors, options);
|
33 |
this.map.addControl(select);
|
下面说下要注意的几点:
1.默认下tilestache切出的数据是按EPSG:900913投影切的
所以我这里的map也是EPSG:900913投影
[代码]js代码:
02 |
maxExtent : new OpenLayers.Bounds(-20037508.3427892, -20037508.3427892,
|
03 |
20037508.3427892, 20037508.3427892),
|
05 |
maxResolution : 156543.0339,
|
08 |
projection : "EPSG:900913",
|
09 |
displayProjection : new OpenLayers.Projection("EPSG:4326"),
|
10 |
theme : 'css/OlTheme/default/style.css'
|
12 |
this.map = new OpenLayers.Map('map', mapOptions);
|
加载geojson切片:

可以看下这切数据

鼠标移到图标上时高亮(图标是后台geoserver渲染的):

|