我试图在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类使用哪种数据源?
由于
答案 0 :(得分:1)
在与开发人员取得联系后,我最终找到了解决方案。事实证明,ImageVector类存在一个错误,它阻止它调用loadFeatures函数。他们修复了开发人员版本并创建了PR。
有关详细信息,请参阅this thread in Google Groups