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

What kind of sources support ol.source.ImageVector in OpenLayers 3

本文关键字:中的 ol source ImageVector OpenLayers 源代码 支持 什么样      更新时间:2023-09-26

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

这是ImageVector类上的文档

ol.source.ImageVector

图像是画布元素的图像源绘制从矢量源(ol.source.Vvector)读取的特征。一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类的唯一例子(如本例)使用StaticVector类中的子类。

有人知道ImageVector类可以使用什么类型的数据源吗?

感谢

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

有关更多详细信息,请参阅Google Groups中的此线程