Více

Přidejte sadu funkcí do grafické vrstvy bez opakování

Přidejte sadu funkcí do grafické vrstvy bez opakování


Mám službu geoprocesingu, která vrací velké množství funkcí (featureSet). Chci je připojit v grafické vrstvě, ale nechci je všechny iterovat. Zkoušel jsem použít možnost mygraphicLayer.graphics, abych nastavil funkce (pole grafiky) na grafickou vrstvu, ale nefunguje to.

Máte představu, jak bych to mohl udělat?

funkce addCityFeatureSetToMap (featureSet) {console.debug ("featureSet", featureSet) var symbol = new esri.symbol.SimpleMarkerSymbol (); symbol.setColor (nové dojo.Color ([0,0255])); // Vytvořit grafickou vrstvu pro města var cityLayer = new esri.layers.GraphicsLayer ({graphics: featureSet.features}); map.addLayer (cityLayer);

edit: Trochu jsem se pohrával a uvědomil jsem si, že moje původní odpověď je nesprávná. musíte procházet jednotlivými grafikami a přidávat () je po jednom, protože grafická vlastnost GraphicsLayer není 'nastavitelná'.

jak již bylo řečeno, je důležité si uvědomit, že by neexistoval žádný výkonnostní přínos API vystavujícího techniku ​​hromadnému načítání grafiky, protože bychom stále potřebovali interně procházet jednotlivými geometriemi, abychom je mohli vložit do DOM.


původní odpověď: Nejsem si jistý, že při tomto přístupu uvidíte nárůst výkonu, ale mělo by to fungovat dobře, pokud nastavíte vhodný vykreslovací modul pro GraphicsLayer.

var myRenderer = nový SimpleRenderer (symbol); cityLayer.renderer = myRenderer; cityLayer.graphics = featureSet.features; cityLayer.redraw ();

právě teď procházíte řadou grafických objektů bez jakéhokoli definování symbolu.


Tímto způsobem bych rozšířil GraphicsLayer

GraphicsLayer.prototype.addGraphics = funkce (arrayOfGraphics) {var that = this; arrayUtil.forEach (arrayOfGraphics, function (graphic) {that.add (graphic);}); }

Podívejte se na video: Voegwoorde. Conjunctions. Afrikaans FAL