Drawsee 2D 开发指南

静态图层概念及操作

本节目录

  1. 静态图层介绍
  2. 获取图层引用
  3. 图层显示配置
  4. 获取静态图层的实体

静态图层介绍

    静态图层是图库中已经配置好的图层。当打开地图时,通常显示的就是静态图层。已经配置好的静态图层信息将不能被修改,但是可以通过静态图层对象提供的相关方法对其属性进行配置。

获取图层引用

    要设置静态图层的属性,首先需要得到静态图层的引用。图层集合(meLayerCollection)中的getLayer(int index)方法可以通过图层索引号获取图层引用。若只知道图层名,则可以通过图层集合中的getLayerByName(string name)方法通过图层名得到图层的引用。若要得到图层的索引,则可以通过图层集合中的getLayerIndexByName(string name)方法得到索引。这是获取一般图层引用的方法。

    例如获取图层引用:

function getOneGeoLayer()
{
	//取得静态图层集合
	var oGeoLayers = oMapViewer.getLayers; //通过getLayers属性得到图层集合
	//
	var oGeoLayer = oGeoLayers.getLayerByName("中国地图");
}

图层显示配置

    对于每一个图层,我们可以控制它的缩放比例尺、是否可见、是否可以被选中、控件实体颜色的透明度以及是否采用光晕围绕标注。

    图层显示配置的相关属性如下:

类型 属性 描述
double maxScale 最大显示比例尺
double minScale 最小显示比例尺
boolean selecttable 图层中的实体是否可以被选择
boolean visible 是否可见
float objectOpaque 控件实体颜色透明度
boolean isHaloFont 是否采用光晕围绕标注

    例如设置静态图层的属性:

//设置图层的最大比例尺为1000
oGeoLayer.maxScale = 10000;
//设置本图层的最小比例尺为100
oGeoLayer.minScale = 100;
//图层中实体不可选
oGeoLayer.selectable = false;
//控件实体颜色透明度
oGeoLayer.objectOpaque = 0.8;
//是否采用光晕围绕标注
oGeoLayer.isHaloFont = true;

获取静态图层中的实体

    获取静态图层实体的方法有如下两种:

  1. selectOne(double centerX, double centerY, double radius),此方法可返回指定范围内的一个实体
  2. 由中心点(centerX, centerY)和半径(radius)圈定的范围内的实体;半径的单位为地图使用的逻辑坐标。
  3.     例如:

    var oGeoObject = oGeoLayer.selectOne(100, 100, 10);
    //若地图的逻辑坐标以米为单位,oGeoObject为以(100, 100)为中心点,10米为半径的圆的范围内的一个实体。

  4. 通过oid选择静态图层中的实体

  5. 可以通过实体的oid编号获取实体,例如:

    var geoObj = layer.getGeoObject(1); //获取oid为1的实体
    if(geoObj != null)
      alert(geoObj.points.getX(0)); //输出此实体的X坐标

  6. 鼠标点击选中静态图层中的实体

  7. 将系统状态设置成为选中状态后,便可以通过鼠标选中实体来得到实体的信息,例如:

    <script language="javascript" for="oMapViewer" event="selObject(layerName, oid)">

    var pointtt = layer.getFocusObject(0); //得到选中的实体

    if(pointtt != null)
    {
      alert("is not null" + pointtt.points.getX(0)); //输出实体的X坐标

      //创建一个新的图例对象
      var pointLegend = oMapViewer.classFactory.createLegend();
      var blueColor = oMapViewer.classFactory.createColorAdvance(0, 0, 255, 0.7);
      pointLegend.initSimplePoint(3, blueColor, true);

      //通过设置focusNodeLegend属性更改选中实体的图例
      oMapViewer.focusNodeLegend = pointLegend;

      oMapViewer.redraw();
    }
    </script>