浏览器打开地图服务地址,显示有Legend的才可以获取到图例
1、利用工具加载图例
var legend = new esri.dijit.Legend({
map:map,
layerInfos:legendLayers
},"legendDiv");
legend.startup();
图例图层可以是数组
2、如果对html中的legendDiv(自定义)执行操作(利用js添加元素什么的)会导致自动刷新图例(没找到原因),
需要给legend 设置参数 autoUpdate:fales(禁止自动刷新) 就ok了
3、可加载的图层有(api看的,没具体试过,只加载过动态图层)
ArcGISDynamicMapServiceLayer, ArcGISTiledMapServiceLayer, FeatureLayer, CSVLayer, KMLLayer, WMSLayer.
4、legend.refresh();方法是异步执行,如果想在其后执行操作,可以利用settimeout延迟一秒执行操作
(比如自己在legendDiv下额外写东西,如果也是图例,拼js建议加上legend本来的class)
5、图层数组为空时,legendDiv下会显示一个id带msg的div,显示无图例(应该是控件自己的),此div和其他图层图例div的class名称不同
6、当legend控件不能满足需求时,可以在服务地址后加
"/legend?f=json"
(地图服务地址必须含有Legend),获取图例的json数据
7、获取json串
$.getJSON(mapServerUrl, function (data) {
console.log(data);
});
8、此json数据中的图片信息是base64 ,可以利用img标签的src填写
<img src='data:image/png;base64," + json数据串.imageData + " ' />
9、如果要向legendDiv,利用js添加html,一定要在legend.refresh(); 后利用settimeout延迟一秒在执行js方法