8 votos

La fusión de pop-ups con la Relación de las Consultas que utilizan el API de ArcGIS para JavaScript?

Estoy tratando de combinar dos de ArcGIS API de JS ejemplos: Característica de la Capa con la Emergente y Consulta de Registros Relacionados. La idea que tengo en mente es hacer clic en un país de la característica, recuperar todos los registros relacionados de un servicio (ya preparado para la relación de las consultas) y presentar los registros de texto dentro de una ventana Emergente (esri.dijit.Popup).

Yo estaba interesado en hacer este ejercicio, porque me gusta la forma en que esta Emergente presenta varios resultados para una característica, por la paginación de ellos como se puede ver en el primer enlace que al hacer clic en un árbol. Y fue un buen partido para mi aplicación con Relación a las Consultas. Hasta ahora, tengo la mayor parte de la funcionalidad ya preparado y puedo ver los registros relacionados recuperados de los servicios en mi consola de firebug. Buena noticia.

Mi problema viene cuando tengo que poner los registros en el Dojo, el Emergente: El ejemplo muestra que la adición de características para la Emergente es tan "simple" como el uso de la setFeatures(características) método. Este método recibe un array de Deferreds o una variedad de Características. En mi caso, tengo los dos de ellos disponibles.

Puedo obtener los resultados como este y agregarlo a la ventana emergente en el mapa.infoWindow parámetro:

mydeferred = featureLayer.queryRelatedFeatures(relatedTopsQuery, function(relatedRecords) {
var fset = relatedRecords[res.attributes['OBJECTID']];
var items = dojo.map(fset.features, function(feature) {
    feature.attributes.DateStart = Date(feature.attributes.DateStart).toLocaleString();
    feature.attributes.DateEnd = Date(feature.attributes.DateEnd).toLocaleString();
    feature.setGeometry(evt.mapPoint);              
    return feature.attributes;
}); 

map.infoWindow.setFeatures(fset.features);
map.infoWindow.show(evt.mapPoint);

Pero, no importa si me pasan a setFeatures Diferido o una Característica de la matriz, que mi salida es la siguiente:

enter image description here

¿Alguien detectar el problema o el error? Creo que el problema podría estar relacionado con el DOM de la estructura de la cuenta, porque si usted ve la imagen adjunta, la función se conoce el tamaño de la matriz de características, pero no muestra ninguno de los registros relacionados. Es importante destacar que:

  • Tuve que agregar manualmente la geometría de campo a las características, tal vez cualquier otro parámetro que falta y que es la razón por la ventana emergente se muestra nada. ¿Tiene sentido?
  • En este momento, la información de la plantilla de función getTextContent() devuelve una cadena "Hola mundo", pero no aparece en la ventana emergente.

Sólo para ilustrar lo que quiero decir que se han adaptado de ESRI Consultas Relacionadas con los Registros de ejemplo para el uso de Popup en este jsfiddle: http://jsfiddle.net/uBNAm/ espero que si ves esto, se puede entender plenamente lo que quiero decir. Simplemente haga clic en manchas de color rojo, hasta que una ventana como la de arriba aparece.

Tal vez es un error? ¿Cómo debo proceder para informar de ello?

5voto

Highstaker Puntos 123

Hace algún tiempo, me enfrenté a una situación similar. En mi caso, que incluso trató de pasar a setFeatures la salida de la queryRelatedFeatures, algo como:

map.infoWindow.setFeatures(myFeatureLayer.queryRelatedFeatures(query, function(relatedRecords){...});

Pero no funcionó tampoco. También probé el mismo con diferido y fset.características, sin suerte. Finalmente tuve que mostrar los resultados en un panel, pero creo que es mejor mostrar en una ventana Emergente.

En mi opinión, DOM objeto devuelto por FeatureLayer::queryRelatedFeatures es distinta a la que volvió, como en los ejemplos, por FeatureLayer::selectFeatures a pesar de que ambos son Deferred. Y esto podría tener "impredecible" consecuencias. Estoy adjuntando una imagen a continuación:

enter image description here

Primera fila es lo queryRelatedFeatures() devuelve. La segunda es lo selectFeatures() devuelve. Como usted puede ver, son completamente diferentes en el interior.

En conclusión: de los resultados obtenidos en el primer caso, están contenidos en un Conjunto de características, mientras que los resultados devueltos en el segundo caso se encuentran en una variedad de Características. Yo soy no es un experto en este ESRI ArcGIS JS-API, pero creo que esto podría ser un error o una falta de funcionalidad que podría ser corregido en futuras versiones... Cualquier desarrolladores de ESRI por aquí para traer la luz? :-)

1voto

Matt Jacobsen Puntos 2151

He estado tratando de desarrollar algo similar y han tenido cierto éxito con un enfoque diferente. Yo uso una capa de consulta para crear un uno a muchos visión espacial, y el valor predeterminado popup widget muestra todos los registros relacionados. Aquí están los detalles:

Tengo un featureclass "alcantarillas" y una tabla "inicdents", donde varios incidentes están asociados a una tubería por una fk relación. Entonces creé una capa de consulta mediante una instrucción sql para devolver los registros deseados. Un left join de las tuberías a los incidentes por ejemplo, se crea una capa de consulta con una característica para cada incidente. Así que si la tubería 1120 tiene 3 inicdents en los incidentes de la tabla, ahora hay tres características apiladas una sobre la otra en la capa de consulta. Usted puede utilizar casi cualquier sql para generar la consulta de la capa así que es bastante flexible.

La api de js ve esto como lo que era un featureclass en su servicio de mapas, por lo que el emergente es realmente paginación través de múltiples características, pero cada característica corresponde a un registro en la tabla relacionada.

No es seguro que esta es la mejor manera de ir. Un inconveniente es que no se puede permitir que los datos adjuntos en una capa de consulta. Necesito esta función, de manera que se tienen que ampliar la ventana emergente de mí...

Mi app de llamadas para la edición de los registros relacionados. Añadir, borrar, modificar. Tengo este trabajo con el código que he escrito para hacer el resto de las operaciones de los incidentes de la tabla, que es una función de servicio.

1voto

Timmy Puntos 293

Esto parece estar relacionado con ArcGIS API de JS Relación de las Consultas.

Yo tenía el mismo problema, y he encontrado que la relación de la consulta no estaba acabado antes de que el poup se muestra. He utilizado setTimeout para resolver mi problema. La longitud del tiempo de espera depende de cuánto tiempo se tarda para la consulta de los datos relacionados.

setTimeout(function () { map.infoWindow.setFeatures([myDeferredResults]); }, 1000);

1voto

Robert S. Puntos 15449

He tratado de resolver este problema durante la última semana, pero sin resultados. Sin embargo he encontrado algún tipo de "solución", utilizando un infowindows basado en este ejemplo: La cosa es que la consulta de los Registros Relacionados con el servicio utilizando Featureayer.queryRelatedFeatures y la cantidad de registros que devuelve la consulta para mostrar una sola característica o un conjunto, como en el ejemplo. No es "cool", pero al menos es funcional.

De todos modos, lo que realmente me gustaría que estaba teniendo la misma funcionalidad con el Emergente. Al final de este hilo, se dice que:

En última instancia, Esri support me dijo que no se podía hacer uso de FeatureLayer::queryRelatedFeatures y le dio un realce/ID del error de NIM081851, pero buscando ahora no la puedo encontrar

He intentado pasar a la setFeatures función casi todo lo que se podía construir, después de este queryRelatedFeatures función: deferred, [deferred], fset, fset.features, [fset.características], o un nuevo array of features construir mediante la aplicación de un .push() mientras que la función de bucle fset.features. Y nada. La más que puedo conseguir es la imagen de arriba.

Creo que es un poco raro que este simple ejemplo, no puede ser "traducido" a una ventana Emergente...debe de ser algo estoy haciendo mal, pero todavía estoy atascado en el mismo lugar. Así que no sé qué hacer...

Cualquier idea nueva? Gracias a todos!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X