向地图中添加实体及创建实例
本节目录
实体介绍
向地图上添加实体实际上就是添加各种图形。按照图形的分类实体可以分为点、线、面三种类型。这些不同类型的实体中记录了元素的空间信息,即空间位置和显示样式等。这些元素的集合构成了地图。
创建图例
在介绍向地图中创建实体前首先介绍图例的概念。图例就是地图中实体的外观样式。它也分别对象点状图例、线状图例和面状图例三类。在地图上创建实体时只是在指定的位置添加一个点,而样式则需要用图例来实现。
创建图例使用的是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(); //清除所有实体对象