Création d'une légende dynamique personnalisée à l'aide d'ArcGis-server js et de dynamicMapServiceLayer

8

J'ai un dynamicMapServiceLayer que j'utilise pour créer une application de carte. Il y a environ 10 couches dans le service de carte que je bascule en utilisant l'action setVisibleLayers.

Je voudrais créer ma propre légende de carte dynamique personnalisée. Lorsque la visibilité d'une couche est basculée, l'élément de légende correspondant masquerait également () / show ()

Mon mapServer a une URL qui renvoie à une page avec tous les éléments de légende correspondants comme ci-dessous, sauf que l'URL de ma légende a 10 éléments de légende

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

Existe-t-il un moyen d'accéder aux éléments de légende individuels (nom et symbole) à partir d'un serveur MapServer existant? Je suis à l'aise de construire la légende, j'ai juste besoin de savoir comment accéder aux symboles des calques que j'ajouterai ensuite à une boîte de dialogue de légende.

Je dois également mentionner que j'évite d'utiliser DOJO et d'utiliser du javascript pur et jQuery.

jotamon
la source

Réponses:

7

Si vous accédez à ce service via l'API REST:

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

Vous pouvez obtenir le JSON en utilisant jQuery http://api.jquery.com/jQuery.getJSON/ Construisez donc la légende vous-même à partir des données que vous avez récupérées.

Pour ajouter les symboles de légende, vous pouvez utiliser jQuery pour créer un img et insérer contentType et imageData de chaque élément de légende dans le src pour rendre le symbole.

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

Ça a du sens?

stu
la source
stu ... cela sonne bien. permettez-moi de pirater cela pendant un certain temps et de voir comment cela se passe
jotamon
Un certain nombre de choses. Premièrement, n'utilisez pas pretty = true car il est inutile et utilise des ressources de serveur supplémentaires. Deuxièmement, vous pouvez accéder au symbole d'un calque en obtenant render.symbol ou un tableau à partir de renderer.infos []. Symbol. Mais gardez à l'esprit que le créateur de la carte a peut-être utilisé un "SimpleMarkerSymbol", "SimpleCircleSymbol" etc.
Jim Wharton