控制地图中的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();
}