Печать меток FeatureLayer в Esri JavaScript API 3.5 и более ранних версиях

Мне нужно реализовать метки для функций в FeatureLayer в версии 3.5, если Esri Javascript API. Метки взяты из поля, возвращаемого службой объектов REST. В настоящее время я не могу перейти на 3.7 по разным причинам. Я пытался использовать TextSymbol, но мои функции карты просто превращаются в цвет TextSymbol, и текст не появляется. Хотя, возможно, я подхожу к этому неправильно. Ниже приведен код, который я пытаюсь использовать для маркировки объекта featureLayer, который является моим экземпляром FeatureLayer, который я добавляю на карту. Есть ли другой или правильный способ выполнить эту задачу?

featureLayer.on("graphic-add", function (evt) { 
var labelColor = new Color([255, 0, 0, 0.25]);
var myLabel = new TextSymbol(evt.graphic.attributes["My Field Name"]);

myLabel.setColor(labelColor);
myLabel.font.setSize("14pt");

evt.graphic.setSymbol(myLabel);

//console.log(evt);


});

Спасибо за любую помощь, которая может быть предоставлена!


person BryceH    schedule 19.10.2013    source источник


Ответы (1)


Я смог решить это с помощью кода ниже. Кажется, это отлично работает.

var labelList = new Array(); 


featureLayer.on("update-end", function (evt) { 
for (var i = 0; i < evt.target.graphics.length; i++) {
var gfx = evt.target.graphics[i];

//if label hasn't been added go ahead and generate it and add to array
if (labelList.indexOf(gfx.attributes[idField]) == -1) {
labelList.push(gfx.attributes[idField]);
addLabelToGeometry(gfx.attributes[labelField], gfx.geometry);
}


}
});



function addLabelToGeometry(text, geometry) {
var point = geometry.getExtent().getCenter();

//top level label of text
var TextSymbolJson = { 
"type": "esriTS",
"color": [0, 0, 0, 255],
"verticalAlignment": "middle",
"horizontalAlignment": "center",
"font": {
"family": "Helvetica",
"size": 12,
"style": "normal",
"weight": "bold",
"decoration": "none"
}
};

var labelTextSymbol = new esri.symbol.TextSymbol(TextSymbolJson);
labelTextSymbol.setText(text);

var labelGraphic = new esri.Graphic(point, labelTextSymbol);
map.graphics.add(labelGraphic); 
}
person BryceH    schedule 20.10.2013