1

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

这是 ImageVector 类的文档

ol.source.ImageVector

一个图像源,其图像是画布元素,从矢量源 (ol.source.Vector) 读取的矢量特征被绘制到其中。ol.source.ImageVector 对象将用作图像层 (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 尝试了同样的事情,但它们不起作用。没有函数执行(前者)或网络调用(后者)。我见过的 ImageVector 类的唯一示例(像这个)使用 StaticVector 类的子级。

有谁知道您可以将哪种数据源用于 ImageVector 类?

谢谢

4

1 回答 1

1

在与开发人员取得联系后,我得出了一个解决方案。原来 ImageVector 类有一个错误,阻止它调用 loadFeatures 函数。他们修复了开发人员版本并创建了 PR。

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

于 2014-09-24T00:40:59.840 回答