首页 / 浏览问题 / 三维GIS / 问题详情
plugin中,创建的GeoMedel怎么进行旋转、移动?
82EXP 2018年07月09日
通过以下方式添加了GeoModel

jeepModel = new SuperMap.Web.Core.GeoModel();
    var modelurl = htmlUrl + "/Source/model/1.zip";
    //通过指定模型文件的zip包所在地址全路径获取三维几何对象
    jeepModel.fromModelFile(modelurl);
    //设置三维几何对象位置
    jeepModel.set_position(new SuperMap.Web.Core.Point3D(tmpPointX, tmpPointY, tmpPointZ));
    //保存高度模式高程
    var style = new SuperMap.Web.Core.Style3D();
    //设置三维几何对象高度模式
    style.set_altitudeMode(SuperMap.Web.Realspace.AltitudeMode.RELATIVE_TO_GROUND);
    //设置三维几何对象底部高程
    style.set_bottomAltitude("0");
    //三维模型的地图风格和几何
    feature = new SuperMap.Web.Core.Feature3D();
    //设置三维地理要素的几何类型
    feature.set_geometry(jeepModel);
    //设置三维地理要素的风格
    feature.set_style3D(style);
    //向跟踪图层添加一个三维要素并设置标签
    trackingLayer = csm.scene.get_trackingLayer3D()
    trackingLayer.add(feature, "demo");
}

我需要对这个对象进行移动、 以及 以自身中点旋转该怎么做?

1个回答

设置geomodel的position和scale,详细可查看帮助文档
5,985EXP 2018年07月09日
根据文档中的方法修改scaleXYZ  以及  position的xyz 场景的model并没有进行移动或者旋转,您可以仔细讲解一下吗?

修改之后更新一下数据

Feature3D.updateData();刷新一下跟踪图层
位置坐标修改成功了。

但是model的旋转修改rotation以及scale之后 通过updateData刷新图层。 model并没有变化。
贴代码吧
通过首页的部分添加了 model

使用以下 分别获取 rotationxyz

scene.get_trackingLayer3D().get_item(0).get_geometry(0).get_rotationX();

scaleX Y Z

scene.get_trackingLayer3D().get_item(0).get_geometry(0).get_scaleX();

通过以下set进行赋值,之后查询也确认了值已经被修改。

scene.get_trackingLayer3D().get_item(0).get_geometry(0).set_scaleZ(50);

通过以下的updateData进行刷新。  场景无变化  model无变化。

scene.get_trackingLayer3D().get_item(0).updateData()
你插件用的哪个版本的?
supermap-iserver-9.0.1a-win64
trackinglayer刷新了吗?
scene.get_trackingLayer3D().refresh();

使用这个刷新 trackingLayer  场景无变化
我这边测试能修改啊,你写个小demo,发我邮箱hulin@supermap.com,我看看呢
已发送邮箱了。
你把你的模型还有用到的库一起打包给我吧,最好我拿到就能调试,我自己改各种资源路径太麻烦了。

smiley 已经发了 ,请问还有什么需要补充的吗?

你给我的我看代码只有添加模型,没有修改模型的代码啊,你直接给我一个完整包,我直接能运行起来,也不用修改路径啥的,理解一下,最近特别忙,电话也不断,我修改半天路径结果发现没有修改模型的代码。。。
能理解, 代码在第一份邮件的内容里面。 那些是我通过F12调试直接输入的。
测试添加时候设置缩放比例有效,修改无效,建议先移除对象再添加修改后的对象。另外把你的单位名,姓名,手机号私信我,我报个缺陷。
对了,还有个问题。

以上创建代码中, 通过 scene.get_trackingLayer3D().get_item(0).get_geometry(0).set_position(new SuperMap.Web.Core.Point3D(x,y,z)); 进行model修改坐标,模型位置变更的同时,当前画面的视角也会进行一次跳动,这是为什么?
我这边没有跳动啊,模型位置改变了,就不在视野内了啊。
我这边模型改变,不在视野内。  视角也会进行一次跳转。   不知道原因在哪。
\supermap-iserver-9.0.1-win64-zip\iClient\for3D\plugin\samplecode\samplecode\samples\Query3D\Hittest.html

我是修改的这个范例测试,在pan的方法里面修改,你试试有问题不。
...