5 votos

"TypeError: No se puede dibujar el gráfico (geometría: nula, símbolo: nula)" después de agregar capas en mosaico y de entidades

Estoy viendo el siguiente error al intentar agregar un suelo de baldosa y disponen de capa para el mismo mapa al utilizar ArcGIS Server API de JS 3.1:

TypeError: no se puede dibujar la gráfica (geometría:null, símbolo:null): _c es indefinido http://serverapi.arcgisonline.com/jsapi/arcgis/3.1compact/js/dojo/dojo/DeferredList.js La línea 8

Después de definir el mapa y la adición de un mapa base, estoy iterar a través de una lista de JSON capa de definiciones, la construcción de cada capa en función de su definición, a continuación, agregar al mapa. El pseudo código es:

dojo.connect(map, "onLoad", function {
   for layerDef in layerDefs:
      if layerDef.type == tiled:
         layer = buildTiledLayer
      if layerDef.type == feature:
         layer = buildFeatureLayer
      map.addLayer(layer)
}

Si me acaba de añadir el de la capa de suelo de baldosa, o simplemente la función de la capa, no hay ningún problema - solo cuando puedo añadir ambos a la vez que veo el mensaje de error. Una vez que el mensaje de error se ha demostrado, un infoWindow no se muestra cuando se hace clic en la capa de entidades.

Este post del foro me llevan a sospechar que el problema puede ser debido a la sincronización de la adición de las capas - durante la depuración, me di cuenta que si puedo quitar el map.addLayer de la línea, y en lugar de empujar las capas en una matriz, puedo introducir manualmente map.addLayers(layerArray) en Firebug, una vez que el mapa se ha terminado de cargar. En este caso, las dos capas añadir correctamente.

La adición de un FeatureLayer ARCGIS API de JavaScript no es relevante porque sé que la función de la capa de definición es correcta - la función de la capa añade sin error si se añade sin el mosaico de la capa.

Del mismo modo, creo que las capas están correctamente definidos ya que cada uno está cargado correctamente sin el otro.

¿Alguien tiene algún consejo de por qué este error podría estar ocurriendo, y cómo resolver el error?

Gracias

4voto

Musher Puntos 131

Tienes razón que la capa no está completamente cargado. Hay un evento en el que dice que cuando las capas están cargados :

onLayerAddResult(layer, error)

Como de v2.0 se activa después de la capa se ha añadido el mapa.

O

onLayersAddResult(results)

Que se dispara después de que todas las capas se añaden al mapa de uso de la map.addLayers método.

http://developers.arcgis.com/en/javascript/jsapi/map.html

Tal vez mejor uso que en lugar de establecer un tiempo de espera en su aplicación, ya que es imposible saber exactamente cuánto va a tardar en cargar.

3voto

Harshad Kshirsagar Puntos 76

Creo que encontré la respuesta, que era insertar una breve pausa antes de agregar las capas.

 //Add the layers, after pausing briefly
setTimeout(function(){
    console.log("pausing a few seconds");
    map.addLayers(mapLayers);
},1000);
 

Después de definir las capas de JSON en el bucle, estoy ejecutando algunas otras operaciones en las capas. No he tenido tiempo de depurar exactamente, pero presumiblemente algo en mi código depende de que la capa en mosaico se haya agregado completamente al mapa.

En resumen, parece que la resolución / solución alternativa al error TypeError: Unable to draw graphic (geometry:null, symbol:null): _c is undefined es pausar brevemente.

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