Как пометить векторный слой, созданный программно?

Я новичок в ESRI ArcGIS API для Javascript и пытаюсь программно создать векторный слой, а затем добавить к нему слой надписей. Слой объектов работает, но слой надписей не выдает результатов (и ошибок тоже). Может кто-нибудь сказать мне, что я делаю неправильно?

jsfiddle: http://jsfiddle.net/9X46z/

Соответствующий javascript:

var layerDefinition = {
    "geometryType": "esriGeometryPoint",
    "fields": [
        {
            "name": "__OBJECTID",
            "alias": "__OBJECTID",
            "type": "esriFieldTypeOID",
        }, {
            "name": "testfield",
            "alias": "testfield",
            "type": "esriFieldTypeString"
        }
    ]
}

var featureCollection = {
    layerDefinition: layerDefinition,
    featureSet: null
};

var fl = new FeatureLayer(featureCollection, {
    id: "featurelayer",
    outFields: ["testfield"]
})

var m = new esri.Graphic(new esri.geometry.Point(-77, 40), pushpin);
m.attributes = {
    "testfield": "test value"
};

fl.add(m);

map.addLayer(fl);

// create a text symbol to define the style of labels
var testLabel = new TextSymbol().setColor(new Color("#666666"));
testLabel.font.setSize("14pt");
testLabel.font.setFamily("arial");
testLabelRenderer = new SimpleRenderer(testLabel);

var labels = new LabelLayer({
    id: "labels"
});
labels.addFeatureLayer(fl, testLabelRenderer, "{testfield}");
// add the label layer to the map
map.addLayer(labels);

person user3297920    schedule 17.07.2014    source источник


Ответы (2)


Вот обновленная версия с одним изменением: http://jsfiddle.net/2WccC/1/.

var m = new esri.Graphic(new esri.geometry.Point(-77, 40), pushpin);

to

var m = new esri.Graphic(esri.geometry.geographicToWebMercator(new esri.geometry.Point(-77, 40)), pushpin);
person slibby    schedule 23.07.2014

Попробуйте установить для параметра карты showLabels значение true при создании карты, которая по умолчанию имеет значение false. карта = новая карта ("mapDiv", {showLabels: true});

person kmxr    schedule 17.10.2016
comment
Это не полное решение, но правильное и важное. developers.arcgis.com/javascript/3/jsapi/labellayer-amd. html - person Frank Conry; 04.02.2017