<\/P>
Então você está trabalhando duro no seu incrível aplicativo ArcGIS JavaScript. Você tem algumas ferramentas personalizadas legais, talvez até algumas capacidades de busca funcionando, isso parece legal<\/EM>. Você clica em uma feição no mapa e tem todas as informações importantes do campo... exceto que você tem números onde talvez os valores deveriam aparecer? <\/P><\/P>Mas o que diabos é isso? O que esse número significa? <\/EM> Então você vai olhar o serviço de mapa e vê que esse campo tem um domain<\/A> associado a ele. Talvez você olhe outro aplicativo onde esse serviço é editado e note que o attribute inspector<\/A> no editor tem os valores corretos do domain e agora você está coçando a cabeça se perguntando como obter esses valores. Não se preocupe, eles estão lá...em algum lugar<\/EM>.<\/P><\/P>
var fieldMap = {};featureLayer.on('load', function() { \/\/- iterar sobre os campos da Layer featureLayer.fields.filter(function(x) { return !!x.domain; \/\/- força valor para booleano. só nos importamos com domains aqui }).map(function(x) { \/\/- mapear campos com domains fieldMap[x.name] = {}; \/\/- hash table fieldMap[x.name].values = {}; \/\/- irá conter valores do domain fieldMap[x.name].alias = x.alias; \/\/- nome amigável para exibição x.domain.codedValues.map(function(a) { \/\/- mapear sobre codedValues fieldMap[x.name].values[a.code] = a.name; \/\/- salvar domain }); });});<\/PRE><\/P>A chave aqui é iterar sobre os campos da camada e armazenar o valor codificado como chave para o valor do domain. Isso facilitará muito a busca dos valores na próxima etapa.<\/P><\/P>Temos um método que define o conteúdo do popup quando ele é clicado. Podemos usar a hash table dos valores do domain para tornar essa tarefa simples.<\/P><\/P>function getTextContent(graphic){ \/\/- obter chaves dos atributos \/\/- *Nota - você pode precisar de um shim para seu navegador var elems = Object.keys(graphic.attributes).map(function(x) { var attr = graphic.attributes;<\/<X> var field = fieldMap;<\/<X> if (field) { return "<b>" + field.alias + "<\/_b>: " + field.values[attr]; } else { return false; } }).filter(function(x) { return x; }); \/\/- retorna apenas resultados válidos return elems.join('<br \/>');}<\/PRE><\/P>Então neste exemplo, usamos
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.