Drawsee 2D 开发指南

向地图中添加实体及创建实例

本节目录

实体介绍

    向地图上添加实体实际上就是添加各种图形。按照图形的分类实体可以分为点、线、面三种类型。这些不同类型的实体中记录了元素的空间信息,即空间位置和显示样式等。这些元素的集合构成了地图。

创建图例

    在介绍向地图中创建实体前首先介绍图例的概念。图例就是地图中实体的外观样式。它也分别对象点状图例、线状图例和面状图例三类。在地图上创建实体时只是在指定的位置添加一个点,而样式则需要用图例来实现。

    创建图例使用的是classFactory类的createLegend()方法来创建的。

    例如:

//取得classFactory类的引用
var factory = oMapViewer.classFactory;
//创建图例
var oLegend = factory.createLegend();

    图例对象创建完毕后,就可以对其进行初始化了。可以初始化四种不同类型的图例,它们分别是图像图例、线图例、点图例和面图例。initImagePoint()方法用来初始化图像图例,initSimpleLine()方法用来初始化线图例,initSimplePoint()方法用来初始化点图例,initSimplePoly()方法用来初始化面图例。

    创建点图例

    创建点图例是使用initSimplePoint()方法实现的。它有三个参数,分别是线的宽度,颜色是否为半透明和是否进行填充三项。

    用法:

var factory = oMapViewer.classFactory;
var oLegend = factory.createLegend();
oLegend.initSimplePoint(1, factory.createColor(0, 0, 255), true); //创建点图例

    创建图像图例

    创建图像图例是使用initImagePoint()方法实现的。它接受一个图片url作为其参数。

    用法:

var factory = oMapViewer.classFactory;
var oLegend = factory.createLegend();
oLegend.initImagePoint(“image url”);

    创建线图例

    创建线图例使用的是initSimpleLine()方法实现的。它接收两个参数,分别是线宽度和颜色。

    用法:

var factory = oMapViewer.classFactory;
var oLegend = factory.createLegend();
oLegend.initSimpleLine(1, factory.createColor(0, 0, 255));

    创建面图例

    创建面图例使用的是initSimplePoly()方法实现的,它接受一个代表颜色的参数。

    用法:

var factory = oMapViewer.classFactory;
var oLegend = factory.createLegend();
oLegend.initSimplePoly(factory.createColor(0, 0, 255));

创建实体

    掌握创建图例的知识后,便可以创建实体对象了。创建不同实体的方法是在meDynamicLayer类中定义的,详细的方法列表如下:

方法名 说明 定义
addEllipseObject 添加椭圆对象 addEllipseObject(float, float, float, float)
addLineObject 添加线对象 addLineObject(MeMapViewer.mePointArray)
addPointObject 添加点对象 addPointObject(float, float)
addPolyObject 添加多边形对象 addPolyObject(MeMapViewer.mePointArray)
addRectObject 添加矩形对象 addRectObject(float, float, float, float)

    下面非别介绍这几种方法的使用。

    创建点实体

    创建点实体使用的是addPointObject()方法实现的,它接受两个参数,分别是要添加位置的经纬度。

    用法:

oClassFactory = oMapViewer.classFactory;
var pointLegend = oClassFactory.createLegend(); //创建图例
pointLegend.initSimplePoint(3, oClassFactory.crateColor(255, 0, 0), true); //初始化点图例
var pointObject = oLayerUser.addPointObject(x, y); //创建点实体
pointObject.text = “点实体”; //设置点实体标注
pointObject.legend = pointLegend; //设置点实体图例
oMapViewer.redraw(); //重绘地图

    在上面的例子中,text属性的作用是设置实体的标注。legend属性的作用是设置实体的图例也就是实体的样式。

    创建线实体

    创建线实体使用的是addLineObject()方法实现的。它接受一个mePointArray类型的对象作为其参数,此对象是一个数组对象,里面存放着线两端起始点的坐标地址。

    用法:

oClassFactory = oMapViewer.classFactory;
var lineLegend = oClassFactory.createLegend();
lineLegend.initSimpleLine(1, factory.createColor(0, 0, 255));
var pointArray = oClassFactory.createPointArray(); //创建点数组对象
pointArray.add(x1, y1); //添加第一个点
pointArray.add(x2, y2); //添加第二个点
var lineObject = oLayerUser.addLineObject(pointArray); //创建线实体
lineObject.text = “线实体”;
lineObject.legend = lineLegend; //设置线实体图例
oMapViewer.redraw(); //重绘地图

    创建矩形实体

    创建矩形实体使用的是addRectObject()方法实现的。它接受四个参数,分别是:左下角x坐标、左下角y坐标、宽度、高度

    用法:

oClassFactory = oMapViewer.classFactory;
var rectLegend = oClassFactory.creteLegend(); //创建矩形图例
rectLegend.initSimplePoly(oClassFactory.createColorAdvance(255, 0, 0, 0.3)); //创建半透明颜色对象
var rectObject = oLayerUser.addRectObject(x1, y1, x2, y2); //创建矩形对象
rectObject.text = “矩形实体”;
rectObject.fillLegend = rectLegend; //设置矩形图例
oMapViewer.redraw();

    创建椭圆实体

    创建椭圆实体使用的是addEllipseObject()方法实现的。它接受四个参数,分别是:左下角x,左下角y,宽度和高度。

    用法:

oClassFactory = oMapViewer.classFactory;
var ellipseLegend = oClassFactory.createLegend();
ellipseLegend.initSimplePoly(oClassFactory.createColorAdvance(255, 0, 0, 0.3)); //创建半透明颜色对象
var ellipseObject = oLayerUser.addEllipseObject(x1, y1, x2, y2); //创建椭圆对象
ellipseObject.text = “椭圆实体”;
ellipseObject.fillLegend = ellipseLegend; //设置椭圆图例
oMapViewer.redraw();

    创建多边形

    创建多边形使用的是addPolyObject()方法实现的。它接受一个mePointArray类型的对象,该对象中存放着多边形各个点的坐标。

    用法:

	oClassFactory = oMapViewer.classFactory;
	var polyLegend = oClassFactory.createLegend();
	polyLegend.initSimplePoly(oClassFactory.createColorAdvance(255, 0, 0, 0.3));
	var pointArray = oClassFactory.createPointArray();
	var count = 7;	//创建一个7边形
	var angleStep = 2 * Match.PI / count;
	for(var i=0; i<count; i++)	//循环向数组中加入坐标点
	{
		x = centerX + Math.cos(angleStep * i);
		y = centerY + Math.sin(angleStep * i);
		pointArray(x, y);
	}
	var polyObject = oClassFactory.addPolyObject(pointArray);	//创建多边形对象
	polyObject.text = “多边形对象”;
	polyObject.fillLegend = polyLegend;	//设置多边形图例
	oMapViewer.redraw();
	

对实体进行操作

    再向地图中添加实体后,可以对已添加的实体进行相关操作。例如得到实体的个数,获得指定实体对象,清除所有实体等操作。

    得到实体的个数

    可以通过meDynamicLayer类的getGeoObjectCount()方法得到地图上实体的个数。

    用法:

var count = oLayerUser.getGeoObjectCount(); //得到地图上实体的个数
alert(“实体的个数为:” + count);

    得到指定实体对象

    可以通过索引得到指定的实体对象。索引的取值范围是从0开始的。

    用法:

var point = oLayerUser.getGeoObject(index); //通过索引得到指定实体对象

    清除地图上的所有实体对象

    可以通过meDynamicLayer类的removeAllGeoObject()方法清除地图上添加的所有实体对象。

    用法:

oLayerUser.removeAllGeoObjects(); //清除所有实体对象