SuperMap GIS基础产品移动GIS FAQ集锦(2)

SuperMap GIS基础产品移动GIS FAQ集锦(2)

【iMobile】AR加载场景不显示
【问题原因】
1.场景切的缓存纹理压缩格式不是移动端支持的;
2.场景原点位置太远,加载后显示效果很小不起眼看不清
【解决方法】
1.确认场景缓存纹理压缩格式,如果加载在线是webp或者ktx格式的缓存,先试试离线数据在AR是否能加载出来,如果还是不出,可以直接加载平面场景看看有没有效果
2.在桌面打开平面场景,看看原点位置与主要模型位置的距离,如果相差很远,可以在桌面打开场景时测量原点与主要模型的距离,然后用arcontrol.setSceneTransLation(x,y,z)平移场景到合适的距离再加载

【iMobile】imobile 加载删格瓦片地图外围又白色背景如何取消
【解决办法】可以用LayerSettingImage.setTransparent(true)设置影像图层背景色透明显示

【iMobile】怎么修改图表图例的大小与列数
【解决方法】先用ChartsView.getLegendView获取图例,再用LegendView.setColumnWidth/setMarkerSize/setNumColumns设置图例子项宽度、设置图例图标大小、设置图例子项列数,之后再用ChartsView.reLayout() 重新布局

【iMobile】移动端路网数据更新有几种方式呢?能用哪些数据来更新呢?
【解决方法】
1.直接导入数据,如果导入的是网络数据集,则直接构建网络模型,如果导入的是线数据集,可以先用NetworkBuilder构建网络数据集,再构建网络模型
2.手动绘制增量路网,
3.使用在线数据服务下载数据后从查询的响应回调ResponseCallback里面用receiveResponse取到服务器响应结果FeatureSet,该类存储从服务上获取的数据,再用FeatureSet.toRecordset将当前Featureset转换为Recordset,再用Recordset.getDataset() 返回记录集对应的数据集,再参考方法1的步骤

【iMobile】怎么直接用代码把二维标绘库中的标绘添加进cad数据集
【解决方法】先用MapControl.addPlotLibrary加载标绘库文件,在实例化GeoGraphicObject的位置,再用geoGraphicObject.setGeometryShape设置标绘对象的类型和坐标以创建指定的标绘符号对象,再用geoGraphicObject.setSymbolSize设置大小,之后取到cad数据集的recordset像往常加入对象到记录集再更新即可

【iMobile】iMobile如何监听地图中心点和比例尺发生变化?
【解决办法】使用mapControl.setMapParamChangedListener(MapParameterChangedListener listener) 设置地图参数变化监听器,在回调事件中去监听地图参数变化。

【iMobile】如何显示某个矢量数据集图层显示某一个或者多个要素对象?
【解决办法】
1.获取该矢量数据集图层Layer
2.通过layer.setDisplayFilter(QueryParameter queryParameter) 设置图层显示过滤条件

【iMobile】如何查看图层中选中对象的属性信息?
【解决办法】
1.获取图层中的选中对象:layer.getSelection();
2.将选择集对象转为记录集:selection.toRecordset();
3.通过记录集recordset获取相关的属性信息,比如recordset.getFieldValue(java.lang.String name)

【iMobile】如何对地图设置框选?
【解决办法】
1.对图层设置可选,layer.setSelectable(true);
2.使用mapControl.setAction(Action.SELECT_BY_RECTANGLE)方法执行框选

【iMobile】移动端是否支持对点数据聚合的功能?
【解决办法】支持的,可以使用PolymerChart 类完成,具体实现思路参考贴图

【iMobile】如何自动生成岛洞多边形
【解决办法】
1.获取需要擦除的几何对象Geometry;
2.然后使用该几何对象擦除大对象,形成岛洞,比如:

Geometrist.erase(geoRegionSource, geoRegionClip)

【iMobile】运行Demo iMobileAR报错:so库和jar包版本不匹配
【问题原因】gradle 没有通过设置ndk 支持armv7 架构 属性,没把so库引入导致报错了
【解决办法】根据报错信息从以下方面排查:
1.确认导入的工程中libs中的so库和jar包是否同一个版本;
2.确认许可是否正常,测试手机的设备系统时间是否正常;
3.运行工程前将原来已生成的该软件卸载,再重新运行安装。
4.使用的grandle版本是多少,建议使用低版本,如4.6 5.设置的targetsdkVersion版本是多少,建议为28及以下

【iMobile】如何判断地图上的一个坐标是否在画的圆内
【解决办法】
1.将需要的判断的目标点坐标给到一个点并添加到图层上,再调用GeoCircle.convertToRegion(int segmentCount)将取到的目标圆转化为一个几何对象
2.使用使用Geometrist.canContain(Geometry geometrySearch, Geometry geometryTarget) 判断搜索几何对象是否包含被搜索几何对象。

【iMobile】本地加载三维场景出现了 java.lang.IllegalStateException: getScene()错误
【问题原因】场景控件没有加载完成就获取了场景导致的
【解决办法】应该需要在场景加载完成监听下去打开三维场景,用scenecontrol.sceneControlInitedComplete(SceneControlInitedCallBackListenner listenner) 添加场景控件初始化回调监听

【iMobile】移动端使用公有云正式许可,报错“许可不可用”,该怎么排查?
【解决办法】
1.SuperMap Online账号下需要有可用的许可。
2.移动设备是否联网,公有云许可使用时,需连接网络,检查移动设备是否开启网络(WIFI或流量),若没开启,开启即可。
3.断网时间是否超时,公有云许可断网两小时后自动回收,检查网络是否已断掉超过2小时,若已超时,重新联网激活,即可使用。
4.账号是否被占用,一个SuperMap Online账号,同一时间连接的设备数,不能超过购买的许可量,如果账号被其它设备占用,则需占用设备归还许可,或断网超过两小时,回收许可后,方可使用。

【iMobile】移动端使用文件型正式许可,报错“许可不可用”、“许可无效”,该怎么排查?
【解决办法】
1.获取的设备硬件识别码不对造成出的正式许可也错误,最基本的判断该识别码是16位有数字和大写字母构成的;
2.许可存储在设备中的路径和工程中Environment.setLicensePath()设置的许可路径是否一致;
3.在工程第一次运行时,没有将WiFi开启或者Android设备7.0及以上版本不能联网造成报没有许可
4.“设备ID获取错误或者多台设备获取ID一致”问题解决方法: 第一步:删除设备中,“内部存储/SuperMap/data/SuperMapKey.ogg”文件; 第二步:打开设备WiFi; 第三步:运行iMobile相关App,重新获取设备ID。(确保上面两步后再运行)。

【iMobile】移动端使用文件型试用许可,报错“许可不可用”、“许可无效”,该怎么排查?
【解决办法】
报错“许可无效” :
1.试用许可是否过期,将试用许可文件“SuperMap iMobile Trial.slm”,以文本方式打开,查看文件中的StartDate(开始时间)和ExpiredData(过期时间)时间是否已过期。
2.系统时间是否有误,如许可文件未过期,查看移动设备系统时间是否正常。
3.许可版本与产品版本是否匹配
报错“找不到许可” :
1.文件路径是否有误,文件路径是否有误如果设备中含有许可,还是报没有许可文件,需查看试用许可文件在移动设备中的路径和工程中Environment.setLicensePath()设置的路径是否一致。
2.Android6.0以上设备需要开启动态权限,开启动态权限的代码如图:

img

【iMobile】移动端使用私有云正式许可,报错“许可不可用”,该怎么排查?
【解决办法】
1.移动设备网络与许可服务网络是否在一个网段,私有云许可在局域网中使用,移动设备连接的网络与许可服务网络必须在一个网段。
2.许可是否被占用,私有云许可,同一时间,连接的设备数,不能多于购买的许可量。若许可已被其它设备占用,需关闭占用设备的App或关闭占用设备的网络后,方可使用。
3.许可服务器是否正常运行,检测许可服务器是否正常运行,若服务器宕机,重启服务器,运行许可中心web 版,重新搭建服务。

【iMobile】移动端使用归还式序列号正式许可,报错“许可不可用”,该怎么排查?
【解决办法】
1.在许可第一次激活时设备需要联网。
2.激活时需要填写正确的模块,如果购买的模块中没有包含激活的模块,会激活失败。
3.许可版本与产品版本是否匹配。

【iMobile】截取图片报错,执行方法执行方法mapControl.outputMap(bgBitmap)抛出异常‘Attempt to invoke virtual method ‘int android.graphics.Bitmap.getWidth()’ on a null object reference’
【问题原因】MapView控件设置了layout_marginTop属性导致的 ,mapview继承RelativeLayout,RelativeLayout 布局的控件是默认汇集在左上角的,当指定的layout_marginBottom 的值远小于父控件默认的距离时,控件会按照默认取值,即0,此时mapview生成的bitmap获取不到尺寸就会导致此错误的发生
【解决办法】去除layout_marginTop就可以了

【iMobile】设备ID又变化了,并且现在获取不到ID
华为设备有随机mac地址的设计导致在不同网络环境下生成的设备Id不一致 在手机wfi设置-高级设置里面关闭随机mac地址,使用机器mac地址,再去手机文件目录下/SuperMap/data下面删除supermapkey.ogg文件再获取设置id

【iMobile】三维地图加载天地图失败,使用天地图地址为http://t0.tianditu.com/img_c/wmts,设置图片类型为JPG_PNG
【问题原因】图片类型不对
【解决办法】JPG_PNG 换成JPG

【iMobile】提升记录集查询效率
【解决办法】
1.通过桌面建立字段索引再保存数据集,该功能位置为开始选项卡->数据处理->字段索引。
2.通过桌面建立空间索引,在“开始”选项卡的“数据处理”组中,单击“空间索引”按钮,弹出“管理空间索引”对话框,可以建立R树索引
3.使用imobile的SpatialIndexInfo类建立空间索引

【iMobile】选择集设置的风格,在地图上无法显示出来,风格也没有改变,但是打印出来选择集的风格是改变了,在地图上没有变化
【问题原因】选择集对象selection构造方法使用了无参构造方法切没有指定数据集
【解决办法】
1.用layer.getselection构造选择集对象
2.用selection.setDataset方法设置选择集的数据集

【iMobile】SuperMap iMobile for Android中如何控制只显示某个属性的地图图层?
【解决办法】layer下面有setDisplayFilter()方法,可以设置图层显示过滤条件。

【Android】【10.2.1】如将三维网络数据生成缓存在Android三维Ar里使用?
【解决办法】 将三维网络数据移动到(0,0)位置,并添加到平面场景里。生成平面场景缓存时“选用S3M1.0以及纹理格式需要用WebP”,这样才可在三维AR里使用。 注:移动端占不支持S3M2.0和ETC纹理格式。

【Android】【10.2.1】Android mui12系统,使用get请求下载数据服务的20万个点数据导致oom,报错如下: 2021-04-14 09:32:41.859 16873-17039/com.gyd.datacollect E/AndroidRuntime: FATAL EXCEPTION: Thread-6 Process: com.gyd.datacollect, PID: 16873 java.lang.OutOfMemoryError: Failed to allocate a 133085776 byte allocation with 25165824 free bytes and 61MB until OOM, target footprint 229371664, growth limit 268435456 at java.lang.StringFactory.newStringFromBytes(StringFactory.java:225) 可能是什么原因?
【问题原因】 因为Android设备的进程内存限制
【解决办法】 在application配置里加上两个属性即可解决:大内存模式和硬件回收 android:largeHeap=“true” android:hardwareAccelerated=“false”

【Android】【10.2.1】移动端里添加地理坐标系的天地图作为底图,添加北京的经纬度坐标点,偏移到新疆了,这是什么原因?
【问题原因】 因为DPI导致的,天地图默认DPI为92
【解决办法】 超图的底层渲染默认采用DPI是96,需要删除天地图缓存后,在天地图服务地址url后加上DPI=96参数即可正常叠加。

【iMobile】三维图层怎么设置透明度
【解决办法】因为移动端三维模型只支持osgb格式缓存,所以要用layer3DOSGBFile.setgeostyle(geostyle3D)方法,其中geostyle3D里面有setFillColor与setLineColor方法,再实例化一四参数color类,color的第四个参数a表示透明度,其取值范围为0-255

【iMobile】ar管线设置透明度不起作用
【问题原因】三维管线实际上还是线对象,如果用了设置填充颜色的方法那么就不会生效
【解决办法】使用GeoStyle3D.setLineColor(color)方法设置管线的透明度

【iMobile】场景中设置模型的透明度看不见
【问题原因】Color颜色类中的RGB值与透明度范围都在0-255之间,而不是0-100,如果透明度调整的太低比如10、20那么将不可见
【解决办法】把透明度调整到合适的范围,一般在80-255的范围,低于80的话由于手机的opengl引擎渲染规则限制导致看不见

【iMobile】ar加载场景看不见,但是在平面场景打开能看见
【问题原因】场景中模型距离原点太远,导致加载出来之后模型看起来非常小容易看不见
【解决办法】
1.先在桌面打开场景,找到模型位置,获取模型位置坐标(x,y,z)
2.用arcontrol.setSceneTransLation(-x,-y,0)这样把模型平移过来

【iMobile】运行范例3dar加载ar管线后点击屏幕管线会移动
【问题原因】范例代码使用了arcontrol.setUpdateAnchor(true),再结合arcontrol的平面跟踪监听,即把场景加载的位置放到了新识别出的锚点位置导致看起来变化了
【解决办法】用arcontrol.setUpdateAnchor(false)关闭锚点更新
1.先在桌面打开场景,找到模型位置,获取模型位置坐标(x,y,z)
2.用arcontrol.setSceneTransLation(-x,-y,0)这样把模型平移过来

【iMobile】运行范例3dar加载ar管线后点击屏幕管线会移动
【问题原因】范例代码使用了arcontrol.setUpdateAnchor(true),再结合arcontrol的平面跟踪监听,即把场景加载的位置放到了新识别出的锚点位置导致看起来变化了
【解决办法】用arcontrol.setUpdateAnchor(false)关闭锚点更新

猜你喜欢

转载自blog.csdn.net/supermapsupport/article/details/130524655
今日推荐