私はJSにかなり興味があります。 私は私のRGB層の中心にマーカーとしてスタイル機能を作成し、このコードの配列に割り当てています:Openlayers 4:配列からの機能をロードする
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')
});
私のレイヤー2の機能の配列はマップに表示されません。 その後、私は、コンソールで手動の特徴のこの配列を追加しようとした場合:
TypeError: a.addEventListener is not a function
しかし、私は手動なように配列から要素を呼び出そうとします:私は次のエラーを取得する
map.addLayer(layers2)
map.addLayer(layers2[0])
正常に動作します。 ベースレイヤー(OSM +マップボックス)を含む配列が正常に動作します。 私の配列タイプには何か問題があります。 しかし、何がわからない。
お越しいただきありがとうございます。
編集1
は、単一のアレイ「層」にすべての私の特徴、RGB層とベースマップを入れてみました。 「層」は、すでにすべての残りの層のオブジェクトが含まれてい
layers.push(vectorLayer);
: だからコードが
layers2[i] = vectorLayer;
からする最初のループで変更されました。 マップを呼び出すときに、 "vectorLayer"機能はありません。 map.addLayer(layers)を使用してコンソールで「レイヤー」を手動で呼び出すと、同じエラーが発生します。 たとえば、map.addLayer(layers[2])
という特定の「vectorLayer」機能を呼び出すときは、表示されます。
あなたの発言は正しいです。 'layers:BaseLayers.concat(Layers2).concat(POI)'も試してみてください。それはあなたにすべての層の単一dimmension配列を与える必要があります。 – pavlos
あなたの返信をありがとう。 私が以前に試した最初の解決策は、うまくいきますが、それは避けたいものです。 解決策2として、私はlayers.push(vectorLayer)で1つの配列にすべてのレイヤーを配置しようとしました。残りのレイヤーを同じアレイ(レイヤー)にプッシュしますが、まだ動作しません。 "vectorLayer"の機能が表示されず、コンソールでそのレイヤーの配列を再度呼び出すと、同じエラーが表示されます。 最初の投稿でいくつかの調整を行います。 – Malebolgea
これまでに試したことがあるのなら、あなたは質問しているときに言及するべきです。あなたが解決策1を使いたくないなら、2か@Pavlosによって与えられた解決策を使用してください。 –