所以,我对JS很陌生。
for (var i = 0, len = Layers.length; i < len; i++) {
var mExtent = ol.proj.transformExtent(Layers[i].BoundingBox[0].extent, 'EPSG:4326', 'EPSG:3857');
var X = mExtent[0] + (mExtent[2]-mExtent[0])/2;
var Y = mExtent[1] + (mExtent[3]-mExtent[1])/2;
var iconFeature = new ol.Feature({
geometry: new ol.geom.Point([X, Y]),
name: Layers[i].Title,
layername: Layers[i].Name,
description: Layers[i].Abstract
});
var iconStyle = new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: ortho
}))
});
iconFeature.setStyle(iconStyle);
var vectorSource = new ol.source.Vector({
features: [iconFeature]
});
var vectorLayer = new ol.layer.Vector({source: vectorSource, zIndex: 100 });
layers2[i] = vectorLayer
}
var map = new ol.Map({
layers:[BaseLayers, POI, layers2],
target: document.getElementById('map')
});
我的layers2功能阵列没有显示在地图上。
如果我尝试在控制台中手动添加此功能阵列:
map.addLayer(layers2)
我发现以下错误:
TypeError: a.addEventListener is not a function
但如果我尝试手动调用数组中的元素,如下所示:
map.addLayer(layers2[0])
它工作得很好。
我的包含基本层的数组(OSM+mapbox)运行良好。
我很确定我的数组类型有问题。
谢谢你过来。
尝试将我的所有功能、rgb层和底图放在单个阵列“层”中。
layers2[i] = vectorLayer;
layers.push(vectorLayer);
其中“层”已包含所有其余层对象。
调用地图时,地图上没有“vectorLayer”功能。
使用map在控制台中手动调用“层”时。addLayer(层)仍然会出现相同的错误。
map.addLayer(layers[2])
例如,它出现了。