问:SuperMap iMobile for Android中导出shp数据时能否设置其字符集,怎么设置?
答:导出时可以设置shp的字符集,通过类DataConversion下的setConvertCharset(Charset charset)方法来实现。
问:SuperMap iMobile for Android中用Rest引擎打开离线的地图缓存sci数据,加载到地图中不显示,怎么回事?
答:从SuperMap iMobile for Android 8.11及以后版本中iMageplus引擎用Rest引擎替换了,如果使用Rest引擎打开地图缓存,那么在iDesktop中切地图缓存时索引范围的左设置为-180,上设置为90,这样切出来的地图缓存在能用Rest引擎打开显示正常。
问:在移动端导入了一个cad文件,在移动端打开显示线有些断断续续,显示不完整,而用桌面导入打开到地图显示是完整的,这是为什么?
答:原因是移动端过滤掉了cad文件里许多小对象线,导致小对象不可见。桌面的图层默认最小可见对象的尺寸是0.1mm,而移动端不是,所有与桌面显示不一致。需要在移动端对图层设置最小可见对象尺寸属性layer.setMinVisibleGeometrySize(size),这样即可与桌面显示一致。
问:Android端对接了supermap online的服务,在使用公共服务时,有什么特别注意的?
答:需要申请一个可用的Key。当然也可直接用公网的Key: fvV2osxwuZWlY0wJb8FEb2i5,另外Android项目配置文件一定要以下相关的网络权限:
问:移动端的三维场景里有哪些操作手势啊,介绍下使用?
答:移动端场景的手势分单指操作和双指操作,单指操作:单指拖动球,及旋转球的,调整旋转角度。双指操作:双指按住球,双指往内拉及缩小球放大了相机高度,双指往外拉及放大球缩小了相机高度,双指同时往上或往下拖动及为抬高或抬低球,改变球的仰角或俯视角。
问:SuperMap iMobile 8C for Android的场景中怎么使飞行路线和站点隐藏?
答:首先得到飞行路线route,然后通过route.setLinesVisible(false)和route.setStopsVisible(false)方法可以设置飞行路线和站点隐藏。
问:在Android Studio里使用imobile for Android产品,运行程序时报错:java.lang.NullPointerException: Attempt to get length of null array,是什么原因啊?
答:这是因为没有引用so文件的目录,导致程序初始化时加载失败。需要在Module的build.gradle里加上jni的sourceSets配置:jniLibs.srcDirs = [‘libs’]。
问:在使用SuperMap iMobile for iOS时,运行工程报错libc++abi.dylib: __cxa_guard_acquire detected deadlock,如何解决?
答:出现这个报错一般来说是因为工程中未引用SuperMap.bundle文件引起的,需要在工程中加入此资源文件。
问:SuperMap iMobile for Android 8C如何打开WMS地图服务?
答:WMS地图服务需要是标准的OGC服务,范例如下:
DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo();
datasourceConnectionInfo.setEngineType(EngineType.OGC);
datasourceConnectionInfo.setDriver(“WMS”);
datasourceConnectionInfo.setWebVersion(“1.3.0”);
datasourceConnectionInfo.setWebCoordinate(“EPSG:901”);
datasourceConnectionInfo.setWebFormat(“image/png”);
datasourceConnectionInfo.setServer(“http://IP:端口号/arcgis/services/yw/MapServer/WMSServer”);
datasourceConnectionInfo.setAlias(“WMS”);
Rectangle2D rec = new Rectangle2D(-64928.303949758345,-63219.69421993446,38037.47445659982,18026.74030383253);
datasourceConnectionInfo.setWebBBox(rec); datasourceConnectionInfo.setWebVisibleLayers(“G_Regulatory_FW,G_Regulatory_DK”);
//打开数据源
Datasource datasource = m_wokspace.getDatasources().open(datasourceConnectionInfo);
以上几个参数都是必须的,要正确。
问:SuperMap iMobile for Android 8C 打开的WMS地图服务,空白的地方遮挡了下面的图层怎么办?
答:WMS地图服务添加到地图后设置图层透明色:
Layer layer = m_mapControl.getMap().getLayers().add(dataset, true);
LayerSettingImage layerSettingImage = (LayerSettingImage)layer.getAdditionalSetting() ;
layerSettingImage.setTransparent(true);
layerSettingImage.setTransparentColor(new Color(132,255,132));
layerSettingImage.setTransparentColorTolerance(50);
问:移动端创建了一个属性表数据集,然后新增了一些字段之后,将该数据源拷贝到PC端之后,用桌面打开提示需要密码,同样的代码在部分移动设备(酷派)上会出现这个问题,其他主流设备没有该问题,这是为什么啊?
答:出现这种问题,与设备的存储系统的更新机制有关系,某些厂商的Android设备系统确实存在读写数据后是存放在内存里,没有立马更新存储系统的文件,这样就导致不会同步在PC端,这就需要手动刷新或重新连接设备才可,当然也可以在代码里,增加一句代码Toolkit.compactDatasource(Datasource)手动更新文件,对数据源进行紧缩,以达到对数据源文件的手动更新,这样就不必重新连接设备,拷贝出来的数据源也可正常打开。
问:SuperMap iMobile 8C for Android叠加分析中对两个面数据集裁剪后得到的对象面积不对,怎么回事?
答:叠加分析的两个面数据集是经纬度的坐标系,裁剪后得到的对象如果放在一个平面无投影的数据集中,得到的对象面积就很小,需要在新建结果数据集时设置为经纬度坐标系,裁剪的结果对象得到的面积才正常。
问:现在超图支持矢量切片吗,怎么使用啊?
答:目前已支持矢量切片,可以用桌面集成的生成矢量切片的工具对本地地图生成切片数据,在移动端对接切片数据,进行显示,其打开方式与打开本地数据源类似,采用引擎类型为EngineType.OpenGLCache,文件路径指定到切片的xml文件即可datasourceconnection.setServer("…/…/SampleData/glCache.xml")打开,然后将数据源里的数据集添加到地图即可显示。
问:SuperMap iMobile 8C for Android中创建数据集字段失败,怎么回事?
答:超图产品中保留了一些关键字,如果数据集创建的字段从开头含有关键字则创建失败,比如创建一个DESCRIBE,由于DESC是关键字,创建的字段中开头含有这个则创建失败,如果不是开头含有则可以创建成功。
问:Android应用在无网络情况下可以使用正式许可?
答:答:离线状态下可以正常使用正式许可。需注意:1.在Android7.0系统的设备上如果首次安装应用使用正式许可那么需要联网条件。2.在Android7.0系统的设备上启动应用使用正式许可需要打开WiFi功能(Android7.0的动态权限要求,可以不联网),启动后会自动关闭WiFi。
问:SuperMap iMobile 8C for Android 中怎么往属性数据集中添加行?
答:先得到属性数据集的记录集recordset,然后通过recordset.addNew(),然后再通过recordset.setString(“字段名称”,“字段值”)添加字段值,如果一行中有多个字段,则需要通过recordset.setString()多次添加,最后再recordset.update()。
问:在SuperMap iMobile 9D中怎么将多个字段值显示在地图中,字段值间用“|”分隔?
答:在imobile中创建标签专题图,专题图的表达式设置为:ThemeLabel.setLabelExpression(字段A||"|“字段B||”|"字段C)。
问:为什么在Android系统为6.0.1的设备上,地图里的标签不显示啊?而在其他设备上能正常显示。
答:是因为Android系统6.0.1自带的字体库文件的路径变更了,与其他设备的路径不一致导致的,可以自行将字体库文件放在一个指定目录下(如“/SuperMap/Fonts/”),然后在初始化里设置字体库的目录(Environment.setFontsPath(sdcard+"/SuperMap/Fonts/")
),即可正常显示。
问:在使用iMobile 8C for iOS时,如何查询场景中BIM模型的属性信息?
答:首先选中需要查询的BIM模型,然后使用图层的selection3D属性获取选择集,然后将选择集转换为Feature3D,然后使用getFieldValueWithString获取相关字段的属性信息
问:SuperMap iMobile 8C for Andrid是否支持海图数据,怎么打开海图数据?
答:移动端不能直接打开海图数据,但是可以先在iDesktop中打开海图数据,然后在iServer中发布为rest地图服务,在移动端打开rest地图服务,加载地图即可。
问:SuperMap iMobile for Android开发的程序,系统升级Android 6.0后就找不到许可了?
答:Android 6.0获取设备ID的方法变化了,用老方法获取的设备ID是错误的,升级版本到SuperMap iMobile for Android 811即可解决。
问:基于 SuperMap.framework 配置的三维应用程序,运行程序后发现三维球不能进行缩放,如何解决?
答:需要开启View的多点触摸选项,在Show the Attributes inspector 中勾选Multiple Touch选项,重新编译即可。
问:SuperMap iMobile 8C for Android中打开iDesktop中保存好的有单值专题图层的地图,单值专题图层中的点符号不显示,怎么办?
答:在environment.setLicensePath()前添加一个代码:environment.setOpneGLMode(false),即不用OpenGL的模式渲染地图,默认是为true的。
问:如何将SuperMap.Geometry对象转换成json?
答:首先将geometry对象转换为ServerGeometry,
var ss=SuperMap.REST.ServerGeometry.fromGeometry(geometry);
问:SuperMap iClient for Android中Util.distance()返回的结果单位是什么?
答:用这个方法返回的结果单位和参数中点的坐标系有关,参数点是地理坐标系,返回结果单位是度,如果是平面坐标系,结果返回单位是米。
问:SuperMap iClient 8C for Android 中做距离查询时设置的查询距离很小也会将数据集中所有的对象都查询出来,怎么回事?
答:在距离查询中设置查询距离时,距离单位和数据集的单位是一致,如果查询的数据集是地理坐标系,距离的单位就是度,设置的距离还是可能过大。