SuperMap iObject常见问题解答集锦(十二)

问:如何自定义鼠标在MapControl上的光标样式?
答:设置MapControl.IsCursorCustomized = true,再设置MapControl.Cursor属性值,即可自定义鼠标光标的样式。

问:怎么给一个栅格图层设置颜色表?
答:Colors.MakeGradient 方法 可以设置系统预设的颜色带,Colors.Add 方法 可以将你指定的颜色加在集合中

layer3dsettinggrid.GridValueTable=colors;即可将栅格图层设置成指定的颜色带。

问:Winform下怎么让Button在Mapcontrol里面背景透明显示?
答:1.设置控件的BackColor属性为Transparent。
2.FlatStyle设置成Flat。
3.FlatAppearance.BorderSize设置为0。
4.设置button.Parent = mapcontrol。

问:将查询出来的记录集转换为数据集怎么操作?
答:通过查询得到记录集,然后用数据源将其转化为数据集代码如下:DataSource.recordsetToDataset().

问:如何将kml中的模型对象或取出来?
答:Layer3DKML layer3dkml = sceneControl1.Scene.Layers[0] as Layer3DKML;
layer3dkml.Features.FindFeature(id, Feature3DSearchOption.AllFeatures);
Feature3D fes = layer3dkml.Features.FindFeature(id, Feature3DSearchOption.AllFeatures);
GeoPlacemark geoplace = fes.Geometry as GeoPlacemark;
GeoModel geomod = geoplace.Geometry as GeoModel;

问:SuperMap iObjects .NET 8C中怎么将CAD数据转模型数据?
答:可以通过Toolkit.ConvertDatasetCAD2Model()方法将CAD数据转成模型数据,转换之前要保证CAD数据中有模型对象,否则无法转换。

问:在虚拟机上选择硬件加密时,需要注意什么问题?
答:(1)如果在虚拟机上使用硬件锁,需要通过虚拟机软件的相关设置将硬件锁设备连接到虚拟机上;(2)硬件锁安装后需要启动一个系统服务,服务名称为:hasplms。

问:在使用SuperMap iObjects C++时,编译的DLL在主工程调用出现崩溃,有可能是什么原因?
答:有可能是因为系统缺少依赖库SMVCP.DLL、SMVCR.DLL,拷贝这两个库添加到系统文件夹下即可。

问:在使用SuperMap iObjects C++时,如何从图层中获取数据集来释放记录集?
答:从UGLayer获取 UGDataset 后,转化为 UGDatasetVector,调用ReleaseRecordset方法再释放UGRecordset

问:在使用SuperMap iObjects C++时,设置点图层的风格后,发现选择对象风格图标无法选中,必须点击点对象原始位置时才能选中,如何解决?
答:图层风格有三个参数需要设置SetMarkerHeight、SetMarkerWidth、SetMarkerSize,如果SetMarkerSize没有进行设置则会出现上述情况,建议风格设置的时候三个参数一起设置

问:地图输出PNG图片,输出的图片太小,放大后就很模糊,怎么办?
答:有两个解决办法:
(1)采用无界面出图,不通过mapcontrol来获取map,而是直接在工作空间中获取地图对象,这样可以设置地图的ImageSize 属性,可以设置图片的大小。
(2)放大地图的比例尺,然后生成图片,这样生成的图片会比较大。

问:SuperMap iObjects.NET中怎么实现查询OSGB缓存图层中选中对象的某个属性?
答:如果OSGB是矢量数据(带记录集)切的缓存,那么可以通Layer3DOSGBFile.GetFieldValueOfSelectedObject方法 ,Layer3DOSGBFile.GetFieldInfos 方法等来获取对象的属性信息。不能通过Selection.ToRecordset转记录集来获取。

问:如何用键盘来控制场景的“行走”?
答:先设置SceneControl.IsKeyboardNavigationEnabled=True,再开启键盘控制的行走模式SceneControl.Scene.WalkingMode = WalkingMode.ByKeyboard。

问:为什么在运行出图、显示等相关代码时,会出现fontmanager.dll找不到的异常?
答:是因为在系统环境里,有多于1个不同版本的JDK路径。清空并保留一个与所使用IDE配置中一致的JDK路径即可。

问:地图坐标系与屏幕坐标系的区别?
答:地图坐标系的坐标原点为左下角,X值在往右的方向增加,Y值在往上的方向增加;屏幕坐标系的坐标原点在左上角,X值在往右的方向增加,Y值在往下的方向增加。

问:怎么在跟踪图层上面获取到鼠标选择的对象?
答:使用TrackingLayer.HitTest()方法获取到选择对象的ID,再根据此ID使用TrackingLayer.Get ()方法获取到对象。

问:为什么通过 iDesktop 和 iObjects Java 查看同一个图层的符号大小或线宽数值不同,iObjects .NET 是 iDesktop 的十倍?
答:两个产品使用的逻辑坐标单位不同,iObjects Java 使用 0.1 毫米为单位,iDesktop 以毫米为单位。

**问:运行时或者执行ldd libSuBase3D.so时出现:libstdc++.so.6: “GLIBCXX_3.4.9” not found 怎么办?
答:将安装包中Support目录下的:libstdc++.so.6 拷贝到组件Bin目录下即可解决。

问:在Linux 64位系统上运行iObjects Java应用程序时,若抛出以下错误:
"…/libWrapj.so:libpng12.so.0:无法打开共享对象文件;没有那个文件或目录"

答:是由于当前系统中缺少libpng12库文件引起的问题,请安装与系统匹配的libpng12库文件来解决此问题。若您手上有系统安装盘可以使用系统盘完成库安装。否则,可以使用产品包/support/中所提供的rpm包完成安装,Suse系统通过yum install libpng12-0-1.2.44-7.1.x86_64.rpm,Redhat 或 CentOS则通过yum install libpng-1.2.10-17.el5_8.x86_64.rpm完成安装。其他Linux系统与此类似。

问:Linux 64 操作系统上安装8C产品许可驱动时,有的会出现:
"The 32bit support is missing. Please install the x86 compatibility packages required by your distribution and retry the installation. See the installation guide for more details. Aborting … "

答:系统缺少32bit支持库,需要安装支持32位的支持库,可以加载系统盘补充安装相关库或到相应系统官网上获取相关库来安装。

问:SuperMap iObjects Java 8C中分组SQL查询失败,怎么回事?
答:分组SQL查询时游标需要设置为静态,如果设置为动态会导致查询失败。

问:场景中Action3D没有编辑节点的枚举类型,怎么在场景中实现编辑线对象和面对象的节点?
答:很简单,获取到要编辑节点的线对象,面对象所在的图层,设置图层可编辑即可,示范代码如下:
Layer3DDataset layer = SceneControl.Scene.Layers[0] as Layer3DDataset;
layer.IsEditable = true;
SceneControl.Action = SuperMap.UI.Action3D.Select;

问:地图的跟踪图层可以开启捕捉吗?
答:跟踪图层里面不支持捕捉功能,但是可以通过Geometrist.NearestPointToVertex方法获取画的点到直线上的最近点,用最近点作为捕捉点进行后续操作。

问:场景中有地形图层,怎么根据经纬度坐标来获取坐标点位置地形的高度?
答:可以通过查地形图层对应的栅格数据集(DEM)中对应栅格值实现,先根据经纬度坐标构造要查询高程的点Point2D,再通过DatasetGrid.XYToGrid()方法返回的Point的X,Y获得栅格在栅格数据集中的行列号,再根据DatasetGrid.GetValue()方法获取到该栅格的栅格值,也就是该点对应的高程值。

问:在跟踪图层上面添加线对象,设置线对象颜色的透明度不起作用怎么回事?
答:通常是地图的Alpha通道没有开启,设置Map.IsGraphicsAlphaEnabled 属性为true即可。

问:如何删除图例中的某些对象?
答:图例实际上就是一个复合对象,获取出复合对象GeoCompound ,然后使用GeoCompound .RemovePart()方法移除子对象,或者先拆分复合对象,然后再删除对应的Geometry。

问:使用Datasource.CopyDataset方法复制数据集时,跟iDesktop复制数据集对比,复制得很慢?
答:注意矢量数据集通常是未编码的,如果复制数据集的时候使用了某种编码方式,复制就会特别慢。

问:从记录集里面获取标会对象,Recordset里面有记录,但是获取Geometry为NULL?
答:需要使用二维标绘类或者三维标绘类先绑定地图控件或者场景控件
PlotRealspace m_plotRealspace = new PlotRealspace();
m_plotRealspace.SetSceneControl(m_sceneControl);

或者
PlotMapping m_plotMapping = new PlotMapping();
m_plotMapping.SetMapControl(m_mapControl);

问:怎么实现启动三维球的时候,三维球旋转功能?
答:Scene.Fly 方法 (Camera, Int32),设置好相机的参数,相机高度设置高一点,要能看到整个地球,结合时间控件一起实现效果更佳更灵活。

问:组件如何打开iserver发布的Rest服务?
答:以打开数据源(Datasource.Open)的方式打开就行了,填写好DatasourceConnectionInfo参数,主要参数是DatasourceConnectionInfo.Server 属性设置为URL地址,DatasourceConnectionInfo.EngineType 属性 设置为iServerRest。

问:为什么使用场景平面模式Flat会报错或者起来之后仍然是一个三维球?
答:目前场景只支持球面模式和局部平面模式(NonEarthFlat),iDesktop使用的平面场景实质上就是局部平面模式(NonEarthFlat)。

问:怎么统计矢量数据集中某列最大值,最小值,平均值,总和,标准差,方差?
答:DatasetVector.Statistic 方法,StatisticMode参数设置对应的统计模式。

问:设置了图层选择集的风格,怎么不起作用啊?
答:需要设置layey.Selection.IsDefaultStyleEnabled=false;

问:怎么实现电子围栏功能?
答:电子围栏的基本原理就是空间查询,查询并管理某区域内(面对象GeoRegion)目标物体(点数据集DatasetVector)的方案如下:
使用DatasetVector.Query 方法 (QueryParameter),设置QueryParameter.SpatialQueryMode为Contain,
设置QueryParameter.SpatialQueryObject 属性为面对象GeoRegion。查询出来区域内的点之后再对点进行管理。

问:SuperMap iObject .NET 8C用鼠标在地图上动态标绘的时候提示“受保护的内存…”,是怎么回事?
答:这是因为标绘时,设置标绘符号
ActionGraphicObject3D ago = new ActionGraphicObject3D();
ago.Parma1 = 0;
ago.Parma2 = 24;
plotRealspace.ActionGraphicObject3D = ago;
参数Parma1 符号库ID的值错误导致的.要设置为SymbolLibManager.AddSymbolLib加载库文件时返回的对应ID。

问:如何屏蔽掉键盘操作?
答:mapControl.InteractionMode = InteractionMode.CustomKeyboard;

问:SuperMap iObjects Java 8C的布局中显示的比例尺的单位能否用英文显示?
答:可以,具体方法是在SuperMap iObjects Java的解压目录中/bin/resource.xml文件中将中文的比例尺单位改成英文的,如千米改成KM,但是要注意如果改成这个后项目中用到超图组件中的所有千米都会变成KM。

问:属性字段赋值没有成功,如何解决?
答:属性字段赋值,要注意以下几点:
第一:确定字段类型和赋值的类型是同一类型;
第二:在锁定字段后,调用recordset.Edit()方法;
第三:使用recordset.Update()方法更新。

问:SuperMap iObjects Java 8C中需要设置什么环境才能保证工程的正常运行?
答:PC端需要在计算机属性中的【高级系统设置】-【环境变量】-【系统变量】的PATH中设置JDK和SuperMap iObjects Java bin的路径;Linux系统中需要在/etc/profile文件中设置JDK和SuperMap iObjects Java bin的PATH路径。

问:SuperMap iObjects Java 8C中Bin目录下的xml文件可以删除吗?
答:不可以删除;因为Bin目录下的xml文件时UGC的资源和配置文件,包括SuperMap.xml,EPSFont.xml,PrjConfig.xml等文件,这些文件一旦删除,会导致软件无法启动。

你可能感兴趣的:(组件GIS,supermap,iObject)