我们注意到,默认的任何FOI对象均没有任何显示label文本。因此,怎样在FOI中添加labels呢?基于创建FOI对象的方法和FOI几何类型有若干标注方法:

 

  • 给Markers添加索引标签

假如你的FOI图层由点对象类型(Markers)组成,你可以给Markers自动添加一个索引号(顺序号)。我想这是非常有用的,比如,某个区域的某种污染物排放量进行从大到小排序然后再地图显示出来,这时对排放企业在地图上,依据排放量进行顺序编号是非常直观有用的。

image

此时可以采用MVThemeBasedFOI.enableMarkerSequence( enabled, type)方法进行顺序编号,详细用法,请参考API 文档。

 

Individual marker FOI objects

假如你是手动创建Marker,比如通过MVFOI.createMarkerFOI() and mapview.addFOI()方法,这种情况下添加label也是非常简单的。可以参考内置的Oracle Maps tutorialmapviewer/fsmc/tutorial/samples/FOIMarker.html.关键函数如下:

    function addFOI()
      {	
        var mpoint1 = MVSdoGeometry.createPoint( -122.58,37.8, 8307);
        var mfoi1 = MVFOI.createMarkerFOI("1", mpoint1, "images/circle.gif", 62, 61);
        mfoi1.setHTMLElement("#1",20,20);
        mapview.addFOI(mfoi1);
        
        var mpoint2 = MVSdoGeometry.createPoint(-122.34,37.7,8307);
        var mfoi2 = MVFOI.createMarkerFOI("2",mpoint2,"images/baseball.gif",28,28);
        mfoi2.setInfoWindow("<img src=\"http://www.oracle.com/admin/images/ocom/oralogo_small.gif\"></p>oracle",300, 150); 
        mfoi2.enableInfoTip(false);
        mapview.addFOI(mfoi2);
        
        var mpoint3 = MVSdoGeometry.createPoint(-122.54,37.78,8307);
        var mfoi3 = MVFOI.createMarkerFOI("3",mpoint3,"images/small_circle.png",10,10);  
        mapview.addFOI(mfoi3);
      }	
    预定义的FOI专题图层(pre-defined theme based FOI layer)
    假如你正在显示一个预先定义好的专题FOI图层,此时MVThemeBasedFOI()方法有一个简单的函数:enableLabels(true);详细使用情况,请参加API 文档。
    动态专题FOI图层
    假如你正在显示基于JDBC的专题FOI图层,此时除了Call MVThemeBasedFOI.enableLabels(true)方法外,还需确保动态专题实际上包含一个label列,然后告诉Mapviewerlabel列的名称以及style。例如:
    	//分级渲染图设置
    	var theme = "<themes><theme name='JDBC_THEME' >" +
                    "<jdbc_query asis='true' spatial_column='geometry' jdbc_srid='8307' " +
                    "render_style='C.Red' datasource='mvdw' label_column='name' label_style='T.COUNTY'>" + baseQuery +
                    "</jdbc_query></theme></themes>" ;
    	countyrendertheme = new MVThemeBasedFOI('countyrendertheme',theme);    
        countyrendertheme.setBringToTopOnMouseOver(true);
    	countyrendertheme.addEventListener("mouse_click", countyrenderthemeClick); 
    	countyrendertheme.enableImageCaching(false);
    	countyrendertheme.enableLabels(true);

    效果图:
    image
    添加标注就如此简单,The End!
    转载请注明出处,谢谢!^_^
    Detaillee
    福州大学福建省空间信息工程研究中心
    2010.08.20
posted on 2010-08-20 10:41  SIRC_Detaillee  阅读(574)  评论(0)    收藏  举报