Більше

Мітка не має доступу до доданого атрибута

Мітка не має доступу до доданого атрибута


У мене є шар, який створюється з кількома атрибутами, один з яких єNAME. Потім я створююLabelLayerі додайте функціональний шар так:

layerLabel.addFeatureLayer (layerDisplay, rendererLbl, "{NAME}", {pointPriorities: 'CenterCenter'});

І це чудово працює.NAMEвідображається там, де я очікував, що він буде відображений. Але я також хочу додати більше атрибутів, тому у мене є код, який додає атрибут під назвоюЦІННІСТЬа потім наupdate-endподія зlayerDisplay, Я додаю свій шар етикетки так:

layerLabel.addFeatureLayer (layerDisplay, rendererLbl, "{NAME} {VALUE}", {pointPriorities: 'CenterCenter'});

Але він відображатиметься, наприклад:Аляска {VALUE}. Чому він не бачитьЦІННІСТЬатрибут? Якщо я додаю точку розриву до додавання шару мітки, я можу це зробити:

console.log (layerDisplay.graphics [0]. атрибути);

І я бачу, що обидваNAMEтаЦІННІСТЬатрибути є.

Трохи халтуривши, і я міг (але краще не робити) перед тим, як додати мій шар властивостей:

layerLabel._buildLabelText = function (b, d, c, e) {return d.NAME + "" + d.VALUE; }

Перезапис існуючого внутрішнього_buildLabelTextфункція. Очевидно, я вважаю за краще не робити цього, але повчально, що об'єкт передається якdмає всі властивості (в т.чNAMEтаЦІННІСТЬ), що я хочу, тому я досі не в курсі, чому звичайна функція не змогла їх зіставити.


Гаразд, після деякого хакерства це виглядає як параметрcдо_buildLabelTextвище насправдіполямасивуlayerDisplay. Схоже, функція шукає відповідність там (за назвою), перш ніж виконає будь -які заміни. Якщо я додам це:

layerDisplay.fields.push ({псевдонім: "VALUE", довжина: 10, назва: "VALUE", тип: "esriFieldTypeString"});

Тоді він замінить{VALUE}зЦІННІСТЬвластивість атрибутів (без необхідності заміни)_buildLabelText)