ArcEngine-Java中符号选择器(SymbolSelector)的使用

来源:互联网 发布:怎么让淘宝信誉高起来 编辑:程序博客网 时间:2024/05/21 14:01
ArcEngine-java的API提供了TxSymbolSelector类,可以弹出一个界面供用户进行各种符号特征的选择,以及对符号的属性进行设置。
其API文档中对该函数提供的接口说明如下:Method Summary  booleanaddSymbol(ISymbol symbol)            Brings up a dialog for Adding a symbol. ISymbolgetSymbolAt(int index)            Gets the symbol at the given index. booleanselectSymbol(int hWnd) 不得不吐槽,arcengine提供的java api写的是非常非常的简略,很多函数的介绍简略到根本得不到有用的信息,只能靠名字进行猜测和不停的尝试。
在arcengine中,主要有点、线、面三种要素,相应的也就有三种用于描述该要素的特征,IMakerSymbol、ILineSymbol、IFillSymbol。
TxSymbolSelector每一次弹出只会列出其中一种类型的所有符号。默认列出的是MarkerSymbol。 但是,可以通过addSymbol(*) 函数来设置页面中列出的符号类型,例如add一个随意设置的IFillSymbol类型,界面列出的符号就是面要素的符号类型。 (在TxsymbolSelector实例化的时候,可以add多种类型要素的符号,但只有最后一个add有用。)同时,TxSymbolSelector弹出的界面中会保持所add的symbol的属性为默认属性。
switch ( element.getGeometry().getGeometryType() ) {case esriGeometryType.esriGeometryPoint:if (element instanceof MarkerElement ) {MarkerElement markerElement = (MarkerElement)element;symbolSelector.addSymbol((ISymbol)markerElement.getSymbol());if (symbolSelector.selectSymbol(mapBean.getHWnd())) {markerElement.setSymbol((IMarkerSymbol)symbolSelector.getSymbolAt(0));}}break;case esriGeometryType.esriGeometryPolyline:LineElement lineElement = (LineElement)element;symbolSelector.addSymbol((ISymbol)lineElement.getSymbol());if (symbolSelector.selectSymbol(mapBean.getHWnd())) {lineElement.setSymbol((ILineSymbol)symbolSelector.getSymbolAt(0));}break;case esriGeometryType.esriGeometryPolygon:IFillShapeElement fill = (IFillShapeElement)element;symbolSelector.addSymbol((ISymbol)fill.getSymbol());if (symbolSelector.selectSymbol(mapBean.getHWnd())) {fill.setSymbol((IFillSymbol)symbolSelector.getSymbolAt(0));}break;default:break;}
<span style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 1.42857143;">该段程序段实现了对任意的元素(element)进行符号的修改,而且通过add()传递进来的元素符号,可以实现保留原元素的原始属性,而只对需要修改的属性进行修改,其它属性保持不变。</span>
<span style="font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 13px; line-height: 1.42857143;"></span><pre style="margin-top: 0px; margin-bottom: 10px; font-size: 13px; overflow: auto; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; padding: 9.5px; line-height: 1.42857143; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; border: 1px solid rgb(204, 204, 204); background-color: rgb(245, 245, 245);"><pre code_snippet_id="538838" snippet_file_name="blog_20141201_3_9540282" name="code" class="java">在arcengine中还有一种特殊的元素就是TextElement,该元素的符号也可以通过以上方法进行修改,但是其提供的属性设置选项非常有限,不能满足需求,所以对于textElement,自己code一个symbolSelector比较好。 
</pre><pre code_snippet_id="538838" snippet_file_name="blog_20141201_3_9540282" name="code" class="java">最后,如果想要自己定义symbolselector中的样式,可以在ArcMap中的样式编辑器中自己制作样式集,是style文件形式存在,然后利用arcEngine自带的makeServeStyleSet.exe程序将style文件转化为serverstyle文件,可供arcEngine程序进行调用。在arcMap10.1中,exe程序在\Desktop\bin\目录下。
                                             
0 0
原创粉丝点击