Drawsee 3D 开发指南

控制地图中的3D模型

本节目录

使用updatePosition()方法设置模型的位置

向地图中添加实体后,可以通过平台提供的相关方法对实体进行移动和放大等操作。移动实体可以使用实体类提供的updatePosition()方法,它接受三个参数,分别是模型的经纬度和海拔高度。

例如如下代码则是将模型向北移动100米

function move()
{
	if(selObject == null)
		return;
	var pt = selObject.points.getAt(0); //得到选中点的当前坐标信息
	selObject.updatePosition(pt.x+0.001, pt.y, pt.z); //移动100米
	oEarthViewer.redraw(); //重绘地图
}

    在上述的代码中,selObject是被选中对象的引用,selObject.points.getAt(0)表示得到选中点的坐标信息。更改经纬度数值后,调用updatePosition()方法重新设置模型实体的位置。最后使用oEarthViewer.redraw()重新绘制地图。移动的单位是度。因此一米相当于十万分之一度。

    在上面的例子中,如果保持经纬度不变只改变海拔高度,那么就实现了对模型海拔高度操作的功能。

例如:

function setAltitude()
{
	if(selObject == null)
		return;
	var pt = selObject.points.getAt(0);
	selObject.updatePosition(pt.x, pt.y+0.001, pt.z);
	oEarthViewer.redraw();
}

放大/缩小模型

    放大缩小模型使用的是实体对象的scaleParam属性来完成的。当放大模型是,首先得到模型当前的scaleParam属性值,然后在此基础是乘以放大的系数后,重新赋值给实体。

例如:

function zoomIn() //放大模型
{
	if(selObject == null)
		return;
	var zoomValue = 0.1; //放大的系数
	var scaleP = selObject.scaleParam; //得到当前实体对象的scaleParam属性值
	scaleP.x = scaleP.x + (scaleP.x * zoomValue);
	scaleP.y = scaleP.y + (scaleP.y * zoomValue);
	scaleP.z = scaleP.z + (scaleP.z * zoomValue);
	selObject.scaleParam = scaleP; //重新设置对象的scaleParam属性值
	oEarthViewer.redraw(); //重绘地图
}

function zoomOut() //缩小模型
{
	if(selObject == null)
		return;
	var zoomValue = 0.1;
	var scaleP = selObject.scaleParam;
	scaleP.x = scaleP.x - (scaleP.x * zoomValue);
	scaleP.y = scaleP.y - (scaleP.y * zoomValue);
	scaleP.z = scaleP.z - (scaleP.z * zoomValue);
	selObject.scaleParam = scaleP;
	oEarthViewer.redraw(); //重绘地图
}

调整模型放置角度

    要更改模型的放置的角度可以通过设置实体对象的angleParam属性来实现。此属性的取值为mePoint3d类型的对象。

例如:

function turnLeft()
{
	if(selObject == null)
		return;
	var angleP = oEarthViewer.classFactory.createPoint3d(1, 0, 0); //转1°
	selObject.angleParam = angleP; //设置模型对象的angleParam属性
	oEarthViewer.redraw();
}