Android平板做地图开发时,要求动态获取服务端发布的图层的图例,在网上找到一些相关的代码,虽然能获取到图例,但是获取不全,经过研究和服务端的图例设置的参数的比对,修改出了一版个人觉得比较全面的获取图例的工具类。
不多说,直接上代码。
package com.qianhengnet.util; import android.graphics.Bitmap; import android.graphics.Color; import com.esri.android.map.Layer; import com.esri.android.map.MapView; import com.esri.android.map.ags.ArcGISFeatureLayer; import com.esri.core.geometry.Geometry; import com.esri.core.geometry.Point; import com.esri.core.geometry.Polygon; import com.esri.core.geometry.Polyline; import com.esri.core.map.FeatureTemplate; import com.esri.core.map.FeatureType; import com.esri.core.map.Graphic; import com.esri.core.map.Legend; import com.esri.core.renderer.ClassBreak; import com.esri.core.renderer.ClassBreaksRenderer; import com.esri.core.renderer.Renderer; import com.esri.core.renderer.UniqueValue; import com.esri.core.renderer.UniqueValueRenderer; import com.esri.core.symbol.Symbol; import com.esri.core.symbol.SymbolHelper; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.TreeMap; /** * legend helper * Created by yangjinjian on 2017/3/27. */ public class LegendUtil { public static int BitmapWidth = 40;//生成的图例的宽度 public static int BitmapHeight = 40;//生成图例的高度 public static int BackgroundColor = Color.WHITE;//图例背景颜色 /** * 获取地图图例列表 * * @param mapView * @return */ public static ArrayList<Legend> getMapLegend(MapView mapView) { Layer[] layers = mapView.getLayers(); ArrayList<ArcGISFeatureLayer> featureLayers = new ArrayList<>(); for (int i = 0; i < layers.length; i++) { if (layers[i] instanceof ArcGISFeatureLayer) featureLayers.add((ArcGISFeatureLayer) layers[i]); } return getAllLegend(featureLayers); } /** * 获取图例列表 * * @param layers * @return */ public static ArrayList<Legend> getAllLegend(ArrayList<ArcGISFeatureLayer> layers) { ArrayList<Legend> list = new ArrayList<>(); boolean isCategory = false; boolean isQuality = false; for (Layer l