首页 / 浏览问题 / 三维GIS / 问题详情
面积量算返回值为点
82EXP 2017年12月06日

     var measureAreaAction = new SuperMap.Web.UI.Action3Ds.MeasureArea(sceneControl);
    sceneControl.set_sceneAction(measureAreaAction); 
    sceneControl.addEvent("measureAreaFinished", areaFinishedHandler);
 

   9D 插件三维,使用如上代码开始量算,能正常画出面,但是在结束返回的方法里面,接收到的却是一个三维点

请问是什么原因?

1个回答

您好,请问您是想用面积量算获取面吗?那么您可以用onclick获取点,然后用点构面。

相关代码:

function getInfo()
{
	//设置控件的当前操作为自定义操作
		var myAction = new SuperMap.Web.UI.Action3Ds.MyAction(sceneControl);
		sceneControl.set_sceneAction(myAction);
}

//通过继承SceneAction的方式来扩展用户的Action,继承方式采用框架提供的格式
//扩展Action的构造函数
SuperMap.Web.UI.Action3Ds.MyAction = function(sceneControl)
{
		///<param name="sceneControl" type="SuperMap.Web.UI.Controls.SceneControl"></param>
	  SuperMap.Web.UI.Action3Ds.MyAction.initializeBase(this);

	  this._name = "myAction";

	  this._sceneControl = sceneControl;

	  this._type = SuperMap.Web.UI.Action3Ds.SceneActionType.MEASUREAREA;

};

//扩展Action的属性和方法
SuperMap.Web.UI.Action3Ds.MyAction.prototype ={
	  /*
	  * 析构方法
	  */
	  dispose:function()
	  {
				///<returns type="void"></returns>
				this._sceneControl = null;
	  },

	  /*
	  * 鼠标单击方法
	  */
	  onMouseDown:function(e)
	  {
			///<param name="e" type="EventObject"></param>
				///<returns type="void"></returns>
				if(e.get_flagType() == SuperMap.Web.Realspace.FlagType.LBUTTON){
					var point = sceneControl.pixelToGlobe(new SuperMap.Pixel(e.get_clientX(), e.get_clientY()));
					var point3d = new SuperMap.Web.Core.Point3D(e.get_longitude(),e.get_latitude(),e.get_altitude());
					point3ds.add(point3d);
				}
				if(e.get_flagType() == SuperMap.Web.Realspace.FlagType.RBUTTON){
					var p3ds = [point3ds]; 
					var georegion3d = new SuperMap.Web.Core.GeoRegion3D(p3ds);
				}
	  }
};

5,560EXP 2017年12月08日
...