您的位置:首页 > 移动开发 > Android开发

安卓智能地图开发与实施十九:符号与渲染器 - ArcGIS Runtime SDK for Android(Version 100.1.0)

2017-07-21 21:54 531 查看

符号与渲染器

符号与渲染器(Symbols and Renderers),通过色彩值、大小、形状、边线、透明度来表达空间要素的具体含义。如果仅仅有位置,而没有位置上的属性信息,位置也会失去意义,符号与渲染器是呈现位置上属性信息的最直接表达方式。对于Graphic(GraphicsOverlay),可以直接赋值符号或者设置渲染器,而对于Feature(FeatureLayer)只能通过渲染器进行设置。



点符号(MarkerSymbol)

OffsetX

OffsetY

Angle

边线: SimpleLineSymbol

SimpleMarkerSymbol

样式:

CIRCLE

CROSS

DIAMOND

SQUARE

TRIANGLE

X

颜色(带透明度)

大小

PictureMarkerSymbol

图片:BitmapDrawable(手机存储资源、工程内部Drawable)、URL(网络图片)

PictureMarkerSymbol -手机存储资源

BitmapDrawable pinBlankOrangeDrawable = (BitmapDrawable) Drawable.createFromPath(mPinBlankOrangeFilePath);
final PictureMarkerSymbol pinBlankOrangeSymbol = new PictureMarkerSymbol(pinBlankOrangeDrawable);
pinBlankOrangeSymbol.setHeight(20);
pinBlankOrangeSymbol.setWidth(20);
pinBlankOrangeSymbol.setOffsetY(10); //高度的一半
pinBlankOrangeSymbol.loadAsync();


PictureMarkerSymbol -工程内部Drawable

BitmapDrawable pinStarBlueDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.drawable.pin_star_blue);
final PictureMarkerSymbol pinStarBlueSymbol = new PictureMarkerSymbol(pinStarBlueDrawable);
pinStarBlueSymbol.setHeight(40);
pinStarBlueSymbol.setWidth(40);
pinStarBlueSymbol.setOffsetY(11);
pinStarBlueSymbol.loadAsync();


PictureMarkerSymbol - 使用网络图片

final PictureMarkerSymbol campsiteSymbol = new PictureMarkerSymbol(
"http://sampleserver6.arcgisonline.com/arcgis/rest/services/Recreation/FeatureServer/0/images/e82f744ebb069bb35b234b3fea46deae");
campsiteSymbol.setHeight(18);
campsiteSymbol.setWidth(18);
campsiteSymbol.loadAsync();


线符号(LineSymbol)

Width

AntiAlias

SimpleLineSymbol

样式:

DASH

DASH_DOT

DASH_DOT_DOT

DOT

SOLID

NULL

颜色(带透明度)

SimpleLineSymbol whiteOutline =
new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(255, 255, 255), 1);


面符号(FillSymbol)

边线: SimpleLineSymbol

SimpleFillSymbol

样式:

BACKWARD_DIAGONAL

FORWARD_DIAGONAL

DIAGONAL_CROSS

HORIZONTAL

VERTICAL

CROSS

SOLID

NULL

颜色(带透明度)

PictureFillSymbol

图片:URL(网络图片)

通过静态方法

(public static ListenableFuture createAsync(final BitmapDrawable drawable))

BitmapDrawable(手机存储资源、工程内部Drawable)

SimpleFillSymbol mSFS =
new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.RED, mPolylinePlacedSymbol);


符号使用

SimpleMarkerSymbol symbol =
new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 12);
Point graphicPoint =
new Point(-226773, 6550477, SpatialReferences.getWebMercator());
Graphic graphic = new Graphic(graphicPoint, symbol);
graphicsOverlay.getGraphics().add(graphic)
Graphic graphic = new Graphic(graphicPoint);
graphic.setSymbol(symbol);
graphicsOverlay.getGraphics().add(graphic)


渲染器 - 单一符号渲染(SimpleRenderer)

Point pointGeometry =
new Point(40e5, 40e5, SpatialReferences.getWebMercator());
SimpleMarkerSymbol pointSymbol =
new SimpleMarkerSymbol(
SimpleMarkerSymbol.Style.DIAMOND, Color.RED, 10);
Graphic pointGraphic = new Graphic(pointGeometry);
GraphicsOverlay pointGraphicOverlay = new GraphicsOverlay();
SimpleRenderer pointRenderer = new SimpleRenderer(pointSymbol);
pointGraphicOverlay.setRenderer(pointRenderer);
pointGraphicOverlay.getGraphics().add(pointGraphic);
mMapView.getGraphicsOverlays().add(pointGraphicOverlay);


渲染器 - 唯一值渲染(UniqueValueRenderer)

UniqueValueRenderer uniqueValueRenderer = new UniqueValueRenderer();
uniqueValueRenderer.getFieldNames().add("STATE_ABBR");
SimpleFillSymbol defaultFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.NULL, Color.BLACK, new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GRAY, 2));
SimpleFillSymbol californiaFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.RED, new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.RED, 2));
SimpleFillSymbol arizonaFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.GREEN, new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GREEN, 2));
SimpleFillSymbol nevadaFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID,Color.BLUE, new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 2));
uniqueValueRenderer.setDefaultSymbol(defaultFillSymbol);
uniqueValueRenderer.setDefaultLabel("Other");
List<Object> californiaValue = new ArrayList<>();
californiaValue.add("CA");
uniqueValueRenderer.getUniqueValues().add(new UniqueValueRenderer.UniqueValue("California", "State of California", californiaFillSymbol, californiaValue));
List<Object> arizonaValue = new ArrayList<>();
arizonaValue.add("AZ");
uniqueValueRenderer.getUniqueValues().add(new UniqueValueRenderer.UniqueValue("Arizona", "State of Arizona", arizonaFillSymbol, arizonaValue));
List<Object> nevadaValue = new ArrayList<>();
nevadaValue.add("NV");
uniqueValueRenderer.getUniqueValues().add(new UniqueValueRenderer.UniqueValue("Nevada", "State of Nevada", nevadaFillSymbol, nevadaValue));
featureLayer.setRenderer(uniqueValueRenderer);


结尾

源程序请自行下载:

链接:http://pan.baidu.com/s/1dEDQe4L 密码:vmin

若失效,可发邮件给韩源萌(polyline@126.com)索要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐