隨筆-18  評論-20  文章-0  trackbacks-0
           
               摘要:   閱讀全文
          posted @ 2007-08-16 11:09 JavaPoint 閱讀(2923) | 評論 (0)編輯 收藏
          ArcGIS Server Java講座---使用圖片和TrueType字體進行標注

          減小字體 增大字體

          直奔主題吧,接上個主題的講座的內容,講講如何用圖片進行標注。在前面一個講座我們已經說明,如何對選中的物體進行高亮顯示。而且這一部分工作是在ADF這一端完成的。那么有的時候,我們進行高亮顯示的時候,不僅僅希望只是設置顏色,我們希望能夠用圖片或者truetype字體進行標注。比如在犯罪地點放一個壞人之類的功能。

          我們來看看實現原理,關鍵是兩個類,WebTrueTypeMarkerSymbolWebPictureMarkerSymbol,沒啥好說的,直接用代碼來說明吧:

          先來看看普通的點標注:


          WebPointpt=(WebPoint)arg0.getWebGeometry().toMapGeometry(arg0.getWebContext().getWebMap());

          WebSimpleMarkerSymbol markers =null;

          markers = new WebSimpleMarkerSymbol();

          markers.setAntialiasing(true);

          markers.setColor("255,0,0");

          markers.setWidth(8);

          markers.setOutlineColor("255,0,0");

          markers.setMarkerType(WebSimpleMarkerSymbol.CIRCLE);  

          markers.setPicture(bytInput);

          GraphicElement ge=new GraphicElement();

          ge.setGeometry(pt);

          ge.setSymbol(markers);

          WebGraphicsgraphics=arg0.getWebContext().getWebGraphics();

          graphics.addGraphics(ge);

          arg0.getWebContext().refresh();



          注意webgraphicsymbolsetPicture方法的參數不是圖片目錄,而是圖片的二進制數組,所以需要用文件IO把圖片讀取進來。當然,如果用戶訪問量很大,線程就不安全了,大家可以在application啟動時進行讀取,放在context的某個attribute里面。我原來認為是通過設置路徑方式實現,這樣又可能可以搞定gif圖形的閃爍,但是現在實驗結果是不行。設置圖片標注的代碼如下:



          WebPointpt=(WebPoint)arg0.getWebGeometry().toMapGeometry(arg0.getWebContext().getWebMap());

          //圖片在servelet容器里面目錄                              

          String picPath=FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()+"\\images\\angle.gif";

          File myFile = new File(picPath);        

          FileInputStream myStream= newFileInputStream(myFile);   

          BufferedInputStream buf = newBufferedInputStream(myStream);

          byte[] bytInput = newbyte[(int)myFile.length()];

          buf.read(bytInput, 0, (int) myFile.length());

          buf.close();

          myStream.close();

          WebPictureMarkerSymbol markers=newWebPictureMarkerSymbol();

          markers.setPicture(bytInput);

          GraphicElement ge=new GraphicElement();

          ge.setGeometry(pt);

          ge.setSymbol(markers);

          WebGraphics graphics=arg0.getWebContext().getWebGraphics();

          graphics.addGraphics(ge);

          arg0.getWebContext().refresh();




          jsf文件里面添加如下代碼,調用圖片標注工具,進行測試:


          <a:tool id="pointTest"defaultImage="images/point.gif"hoverImage="images/pointU.gif"

          selectedImage="images/pointD.gif"clientAction="EsriMapPoint" serverAction="com.cj.ucdemo.GifTestTool"clientPostBack="true"/>



          圖片標注的結果如下:
           
           


          用圖片做markSymbol

          我們也可以使用TrueType字體里面的矢量字體對圖形進行符號化顯示,這也是我們經常使用的方法,具體代碼如下:



          webMap=arg0.getWebContext().getWebMap(); WebPointpt=(WebPoint)arg0.getWebGeometry().toMapGeometry(webMap); WebTrueTypeMarkerSymbol trueMarkerSymbol=new WebTrueTypeMarkerSymbol(); //注意使用系統里面已經安裝的字體 trueMarkerSymbol.setFontName("ESRITransportation & Civic");//設置索引 trueMarkerSymbol.setCharacterIndex(8); trueMarkerSymbol.setFontColor("255,0,0"); trueMarkerSymbol.setFontSize(20); trueMarkerSymbol.setFontStyle(WebTrueTypeMarkerSymbol.BOLD);GraphicElement ge=new GraphicElement(); ge.setGeometry(pt); ge.setSymbol(trueMarkerSymbol);WebGraphicsgraphics=arg0.getWebContext().getWebGraphics(); graphics.addGraphics(ge);arg0.getWebContext().refresh();



          把上面的代碼放在一個點擊工具里面,在jsf文件中用如下代碼進行調試:




            <a:toolid="trueMarkerTest" defaultImage="images/point.gif"hoverImage="images/pointU.gif"                               selectedImage="images/pointD.gif"clientAction="EsriMapPoint"                               serverAction="com.cj.ucdemo.TrueTypeMarkerTest"clientPostBack="true"/>


          TrueType字體標注的結果如下圖所示:

             

          posted @ 2007-08-16 11:07 JavaPoint 閱讀(1569) | 評論 (1)編輯 收藏
               摘要:   閱讀全文
          posted @ 2007-08-16 11:01 JavaPoint 閱讀(1927) | 評論 (8)編輯 收藏
               摘要:   閱讀全文
          posted @ 2007-08-15 15:56 JavaPoint 閱讀(2426) | 評論 (1)編輯 收藏
               摘要:   閱讀全文
          posted @ 2007-08-15 15:28 JavaPoint 閱讀(724) | 評論 (0)編輯 收藏
          一、Creat task 建立任務
                 Creat New Feature  新建要素  (這個不用說了吧)如圖1
           
          二、Modifu tasks  修改任務
          1、Reshape Feature 更新要素(如圖2)對多邊形進行外部削除
           
          2、Cut Poly Featrue 剪切多邊形要素
          即對多邊形要素進行內部分割,①用箭頭工作選中多邊形;②鉛筆工具為可用,選擇之;③在多邊形內部進行分割。注意:分割操作只在選中多邊形的藍色框區域內有效,其它部分無效。(如圖3)
           
           
           3、Mirror Features  鏡像要素 (這也不用說了吧,看到圖4就明白了)
           
          4、Extend/Trim Features  延伸/修剪要素 主要對線要素進行操作
          延伸:①用箭頭工作選中線;②鉛筆工具為可用,選擇之;③在線外確定延長所至位置(如圖5)。
           
          修剪:①用箭頭工作選中線;②鉛筆工具為可用,選擇之;③在線內側拉出一條剪切線。注:如果按從左至右的順序拉動剪切線,則保留原線的上部分;如果按從右至左的順序拉動剪切線,則保留原線的下部分。(如圖6)
           
          body.clientHeight)this.width=body.clientHeight" border="0">
          5、Modify Feature  修改要素。
          注:如用鉛筆工具時,則是從要素最后一個錨點開始繼續畫線或修改多邊形形狀(如圖7)。
           
          6、Calibrate Route Feature 校準路線(通道)要素
          這條俺也沒明白,大家一起研究研究呀
          7、Modify Portion of a line 修改線的一部分
          這條俺也沒明白,大家一起研究研究呀
           
          三、Topology Tasks  拓撲任務
          1、Modify Edge  修改邊
          這條俺也沒明白,大家一起研究研究呀
          2、Reshape Edge  改造邊
          暈,這個也沒看明白…..
          3、Aruto-complete polygon 自動完成多邊形(我的理解是:外接多邊形)
          (首先非常感謝5樓的MM給我的提示,書歸正傳body.clientHeight)this.width=body.clientHeight" border="0">)
          創建一個和已有多邊形共享邊界的新多邊形時就可以用這個工具。不過要先選中已有的多邊形。如圖8,操作一下大家就會明白的。
           body.clientHeight)this.width=body.clientHeight" border="0" width="316">
           
          四、Other tasks 其它任務
          1、Select Feature using a line  用線選擇要素(如圖8)
           body.clientHeight)this.width=body.clientHeight" border="0" width="316">
          2、Select Feature using a Area  用面選擇要素
          與前一個差不多,不必多說
          3、Create 2-piont Line Feature  建立兩點線要素
          繪制多條不連續的2點直線,不必多說。
          posted @ 2007-08-15 15:20 JavaPoint 閱讀(2897) | 評論 (1)編輯 收藏
          僅列出標題
          共2頁: 上一頁 1 2 
          主站蜘蛛池模板: 元朗区| 莒南县| 易门县| 玉田县| 昌平区| 固原市| 遂宁市| 岳普湖县| 神农架林区| 奉化市| 大关县| 灵川县| 呈贡县| 剑阁县| 两当县| 子洲县| 阿坝县| 天全县| 定陶县| 方正县| 石柱| 石阡县| 诸城市| 如东县| 黄龙县| 铅山县| 古交市| 平凉市| 武平县| 临高县| 高雄县| 桑植县| 青河县| 新余市| 马山县| 泸定县| 绥江县| 都安| 西乡县| 榕江县| 德钦县|