什么样的源支持OpenLayers 3中的ol.source.ImageVector

时间:2014-09-19 00:40:42

标签: javascript openlayers-3

我试图在OpenLayers 3中绘制矢量切片,我想测试图像矢量的性能,因为我的体积太大,浏览器无法处理。

这是ImageVector类的文档

  

ol.source.ImageVector

     

一个图像源,其图像是向量中的画布元素   从矢量源(ol.source.Vector)读取的特征被绘制。一个   ol.source.ImageVector对象将用作图像的源   layer(ol.layer.Image)。

根据这一点,ol.source.Vector类型的所有源都应该工作。该课程的三个内容如下:

ol.source.Vector 
 |_ ol.source.Cluster
 |_ ol.source.FormatVector
    |__ ol.source.ServerVector
    |__ ol.source.StaticVector
    |   |__ ol.source.GeoJSON
    |   |__ ol.source.GPX
    |   |__ ol.source.IGC
    |   |__ ol.source.KML
    |   |__ ol.source.OSMXML
    |   |__ ol.source.TopoJSON
    |__ ol.source.TileVector

因此,根据我的理解,我应该能够将任何这些来源用于ImageVector源。所以,我尝试了类似下面的事情,没有成功。

    var waterVectorSource = new ol.source.TileVector({
        format: new ol.format.TopoJSON(),
        projection: 'EPSG:3857',
        tileGrid: new ol.tilegrid.XYZ({
            maxZoom: 19
        }),
        url: 'http://{a-c}.tile.openstreetmap.us/' +
            'vectiles-water-areas/{z}/{x}/{y}.topojson'
    })

    var imageVectorSource = new ol.source.ImageVector({
        source:waterVectorSource
    });

    var imageLayer = new ol.layer.Image({
        source:imageVectorSource
    });
    var map = new ol.Map({
        target: 'map',
        layers: [
            /*new ol.layer.Tile({source: new ol.source.MapQuest({layer: 'sat'})}),*/
            imageLayer 
        ],
        view: new ol.View({                
            zoom: 13
        })
    });

使用ServerVector而不是TileVector尝试同样的事情,但它们不起作用。不进行功能执行(前者)或Web调用(后者)。我见过的ImageVector类(like this one)的唯一例子是使用StaticVector类的子代。

有没有人知道您可以为ImageVector类使用哪种数据源?

由于

1 个答案:

答案 0 :(得分:1)

在与开发人员取得联系后,我最终找到了解决方案。事实证明,ImageVector类存在一个错误,它阻止它调用loadFeatures函数。他们修复了开发人员版本并创建了PR。

有关详细信息,请参阅this thread in Google Groups