Construindo uma legenda dinâmica personalizada usando o ArcGis-server js e dynamicMapServiceLayer

8

Eu tenho um dynamicMapServiceLayer que estou usando para criar um aplicativo de mapa. Existem cerca de 10 camadas no serviço de mapas que estou alternando usando a ação setVisibleLayers.

Gostaria de criar minha própria legenda de mapa dinâmica e personalizada. Quando a visibilidade de uma camada é alternada, o item da legenda correspondente também oculta () / show ()

Meu mapServer possui um URL que direciona para uma página com todos os itens de legenda correspondentes, como abaixo, exceto que o URL da minha legenda tem 10 itens de legenda

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

Existe uma maneira de acessar os itens de legenda individuais (Nome e símbolo) de um mapServer existente? Estou confortável construindo a legenda, só preciso saber como acessar os símbolos das camadas que serão anexados a um diálogo de legenda.

Devo também mencionar que estou evitando o DOJO e o javascript e jQuery.

jotamon
fonte

Respostas:

7

Se você acessar esse serviço por meio da API REST:

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

Você pode obter o JSON usando o jQuery http://api.jquery.com/jQuery.getJSON/ Portanto, construa você mesmo a legenda a partir dos dados que você recuperou.

Para adicionar os símbolos da legenda, você pode usar o jQuery para criar um img e inserir o contentType e o imageData de cada item da legenda no src para renderizar o símbolo.

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

Faz sentido?

stu
fonte
stu ... isso parece ótimo. deixe-me cortar fora a isso por um tempo e ver como ele vai
jotamon
Um par de coisas. Primeiro, não use pretty = true, pois é desnecessário e usa recursos extras do servidor. Em segundo lugar, você pode obter o símbolo de uma camada obtendo render.symbol ou uma matriz de renderer.infos []. Symbol. Mas tenha em mente o mapa criador pode ter usado um 'SimpleMarkerSymbol', 'SimpleCircleSymbol' etc.
Jim Wharton