<\/P>
Así que estás trabajando duro en tu increíble aplicación ArcGIS JavaScript. Tienes algunas herramientas personalizadas muy buenas, incluso puede que tengas algunas capacidades de búsqueda funcionando, esto se ve genial<\/EM>. Haces clic en una entidad en el mapa y tienes toda la información importante del campo... excepto que tienes números donde tal vez deberían aparecer valores?<\/P><\/P>¿Pero qué demonios es eso? ¿Qué significa ese número siquiera?<\/EM> Entonces vas y miras el servicio de mapa y ves que este campo tiene un domain<\/A> asociado. Tal vez miras otra aplicación donde se edita este servicio y notas que el attribute inspector<\/A> en el editor tiene los valores correctos del domain y ahora solo te quedas rascándote la cabeza preguntándote cómo obtener esos valores. No te preocupes, están ahí...en algún lugar<\/EM>.<\/P><\/P>
var fieldMap = {};featureLayer.on('load', function() { \/\/- iterar sobre los campos de la Capa featureLayer.fields.filter(function(x) { return !!x.domain; \/\/- forzar valor a booleano. aquí solo nos importan los domains }).map(function(x) { \/\/- mapear campos con domains fieldMap[x.name] = {}; \/\/- tabla hash fieldMap[x.name].values = {}; \/\/- contendrá los valores del domain fieldMap[x.name].alias = x.alias; \/\/- nombre para mostrar agradable x.domain.codedValues.map(function(a) { \/\/- mapear sobre codedValues fieldMap[x.name].values[a.code] = a.name; \/\/- guardar domain }); });});<\/PRE><\/P>La clave aquí es iterar sobre los campos de la capa y almacenar el valor codificado como la clave para el valor del domain. Esto hará que la búsqueda de los valores sea mucho más fácil en el siguiente paso.<\/P><\/P>Tenemos un método que define el contenido del popup cuando se hace clic. Podemos usar la tabla hash de valores del domain para hacer esta tarea simple.<\/P><\/P>function getTextContent(graphic){ \/\/- obtener las claves de los atributos \/\/- *Nota - puede que necesites un shim para tu 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; }); \/\/- solo devolver resultados válidos return elems.join('<br \/>');}<\/PRE><\/P>Así que en este ejemplo, usamos
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.