Creación de una leyenda dinámica personalizada con ArcGis-server js y dynamicMapServiceLayer

8

Tengo un dynamicMapServiceLayer que estoy usando para construir una aplicación de mapas. Hay alrededor de 10 capas en el servicio de mapas que estoy alternando usando la acción setVisibleLayers.

Me gustaría construir mi propia leyenda de mapas dinámica personalizada. Cuando se cambia la visibilidad de una capa, el elemento de la leyenda correspondiente también se ocultaría () / show ()

Mi mapServer tiene una URL que enlaza a una página con todos los elementos de leyenda correspondientes, como a continuación, excepto que la URL de mi leyenda tiene 10 elementos de leyenda

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer/legend

¿Hay alguna forma de acceder a los elementos de leyenda individuales (Nombre y símbolo) desde un mapServer existente? Me siento cómodo construyendo la leyenda, solo necesito saber cómo acceder a los símbolos de las capas que luego agregaré a un diálogo de leyenda.

También debo mencionar que estoy evitando usar DOJO y usar javascript puro y jQuery.

jotamon
fuente

Respuestas:

7

Si accede a ese servicio a través de la API REST:

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer/legend?f=json&pretty=true

Puede obtener el JSON usando jQuery http://api.jquery.com/jQuery.getJSON/ Así que construya la leyenda usted mismo a partir de los datos que ha recuperado.

Para agregar los símbolos de leyenda, puede usar jQuery para crear un img e insertar el contentType e imageData de cada elemento de leyenda en el src para representar el símbolo.

/programming/5000710/receive-image-data-as-json-and-injecting-it-into-the-dom/5000778#5000778

¿Tener sentido?

stu
fuente
stu ... esto suena genial. déjame hackear esto por un tiempo y ver cómo va
jotamon
Un par de cosas. Uno, no use pretty = true ya que es innecesario y usa recursos de servidor adicionales. En segundo lugar, puede obtener el símbolo de una capa obteniendo render.symbol o una matriz de renderer.infos []. Symbol. Pero tenga en cuenta que el creador del mapa puede haber usado un 'SimpleMarkerSymbol', 'SimpleCircleSymbol', etc.
Jim Wharton