SuperMap iClient for JavaScript常见问题解答集锦(一)

作者:朝阳


问:iClient for JavaScript中, selectFeature获取到当前的要素,进行样式的修改,然后将其添加到另一个矢量图层上,拖动缩放地图是,报“Uncaught NotFoundError: Failed to execute removeChild on Node: The node to be removed is not a child of this node”?
答:这种情况下,要素并没有加载到另一个矢量图层,所以使用removeAllFeatures()方法,会报上面的错误,解决方法就是在修改是,应clone()下当前要素即可

问:在SuperMap iClient for Javascript中能查询矢量图层上的要素吗?
答:矢量图层上的要素是不支持查询的,可以使用SelecFeature设置框选来选取指定要素。

问:SuperMap iClient for javascript中在vectorlayer上使用Control.DrawFeature绘制要素默认是用户双击结束绘制;如何用代码控制提前结束绘制?
答:SuperMap.Control.DrawFeature提供方法finishSketch结束要素的绘制,点要素绘制不适用该方法。

问:在SuperMap iClient for 3D客户端中支持绘制飞行路线吗?
答:暂时不支持,飞行路线只能在iDesktop中制作。

问:在iClient for javascript中如何实现框线vectorlayer上的Featrue要素?
答:使用SuperMap.Control.SelectFeature,并设置SelectFeature.box属性为true即可框选要素

问:SuperMap for JavaScript中使用CartoCSS编辑,为什么一种数据集定义两种风格?
答:定义两种风格可以实现叠加显示。

问:iClient for Android 公交换乘起止点可否不在公交站上?
答:可以,将TransferPathParameters的points方法,两种查询方式: 1. 按照公交站点的起止ID进行查询,则points参数的类型为Integer[],形如:[起点ID、终点ID], 公交站点的ID对应服务提供者配置中的站点ID字段; 2. 按照起止点的坐标进行查询,则points参数的类型为Point2D[],形如:[{“x”:44,”y”:39},{“x”:45,”y”:40}]。

问:在SuperMap iClient for Javascript中使Layer.Makers添加多个Maker,为什么只显示了最后添加的Maker?
答:这种情况一般是用户初始化这些Maker时都使用了同一个Icon,在初始化Makers也初始化不用的Icon即可。

问:在 iclient for JavaScript中,Popup弹窗添加closeBoxCallback(关闭弹窗触发该回调函数)后,Popup弹窗关闭不了,怎么办?
答:需要在closeBoxCallback回调函数中手动增加关掉Popup弹窗的代码,例如 popup.destroy()

问:在iclient for JavaScript中,如何获取几何图形Geometry的顶点列表?
答:在SuperMap.Geometry中有一个方法getVertices
这个方法可以返回几何图形的所有顶点列表,该方法需在Geometry子类中实现

问:在iClient for javascript中使用utfGird图层时得到的返回结果为空,为什么?
答:使用utfGird缓存应注意需要现在iServer对应的服务组件中勾选开启utfgrid缓存,代码中需要在map上设置projection和maxExtent这两个参数。

问:SuperMap iClient 7C for JavaScript画矩形的设置鼠标样式 document.getElementById(“map”).style.cursor = “crosshair” ,可以把鼠标样式成功改成+,但是画圆或多边形怎么不行?
答:创建SuperMap.Control.DrawFeature对象时,在handlerOptions里边设置cursorCSS属性即可,如:
var drawPolygon = new SuperMap.Control.DrawFeature(vectorLayer, SuperMap.Handler.Polygon,{“handlerOptions”:{“cursorCSS”:"***"}});

问:SuperMap iClient 7C for JavaScript柱状统计图坐标轴下面如何显示文本?
答:设置SuperMap.REST.ThemeGraphAxes的axesTextDisplayed属性为true即可显示坐标轴的文本标注。

问:SuperMap iClient for Javascript中如何给地图加上版权信息?
答:需使用版权信息控件SuperMap.Control.Attribution;将该控件实例化添加到地图上后再在layer.attribution属性中写入版权信息内容(html标签)

问:SuperMap iClient 7C for JavaScript中标签专题图层被其他专题图图层遮盖,如何将标签专题图放在其他专题图的上面?
答:可以将标签专题图层比其他专题图层后添加到Map的图层列表中,或者使用Map里面的setLayerIndex()方法移动图层在图层列表中的指定索引值(索引值从零开始)的位置,改变它在地图显示时的z-index值。

问:SuperMap iClient 7C for JavaScript如何绘制曲线?
答:调用SuperMap.Geometry.LineString类的createCurve()方法即可绘制曲线。

问:SuperMap iClient 7C for JavaScript如何控制图层是否显示?
答:可以直接添加SuperMap.Control.LayerSwitcher控件对图层进行控制,也可以通过图层的setVisibility()方法设置图层可见性。

问:SuperMap iClient for Flash如何实现地图上叠加的图片随地图缩放?
答:将图片添加到ElementLayer图层,并设置isElementsZoomWithMap 为true。

问:SuperMap iClient for Flash 中通过点要素图片风格PictureMarkerStyle添加gif格式图片动画后,为什么没有动画效果?
答:由于Flex对gif格式图片动画显示支持不好,可以使用第三方插件来支持,或者通过图片格式转换软件将gif格式转换成swf格式再添加即可。

问:SuperMap iClient 7C for Android地图查询中如何查询多个图层?
答:在查询参数QueryParameterSet的queryParams属性中设置多QueryParameter即可。

问:SuperMap iClient for Flash中距离查询返回结果是否按距离排序?如何返回距离最近的结果?
答:是的。设置距离查询参数QueryByDistanceParameters的isNearest 属性为true 即可距离最近的结果。

问:SuperMap iClient for Flash如何解决feature的click事件和平移事件冲突问题?
答:可以监听map的panStart事件,在该事件的回调函数中设置一个布尔类型变量的为true,表示进行了平移操作。在feature的click事件回调函数中判断该布尔变量的值,如果为flase才执行相应操作。

问:SuperMap iClient 7C for JavaScript如何修改控件样式?
答:SuperMap iClient 7C SP1 for JavaScript版本提供两套控件样式:一套为”WHITE”,即白色样式,只支持 Zoom、LayerSwitcher、OverviewMap 三个控件;另一套为”BLUE”,即蓝色样式,默认为白色样式。在初始化控件之前设置SuperMap.Control.SKIN = “BLUE”; 即可使用蓝色样式的控件。

问:SuperMap iClient for Flash 如何判断点在面内?
答:可以使用GeoRegion的contains()方法,判断面对象中是否包含某个点。

问:将使用SuperMap iClient for Flash 程序放到Tomcat中部署后地图空白,而在FlashBuilder 中运行能看到地图,这是为什么?
答:需要将SuperMap iClient for Flash 产品包中的跨域文件crossdomain.xml放到【Tomcat 安装目录】\webapps\ROOT 目录下,就可以看到正常地图。

问:SuperMap iClient for Flash如何设置路径分析的点选容限?
答:在SuperMap iServer的服务管理页面,找到对应的网络分析服务提供者,设置高级设置里的结点到弧段的距离容限为合适的值,该值单位为地图单位。

问:在SuperMap iClient for Android中,如何设置绘制面对象的透明度?
答:在绘面风格中的设置paint.setColor,例如:paint.setColor(Color.argb(50, 10, 230, 250));其中第一个值为alpha值,即透明度,数值在0-255之间。

问:在SuperMap iClient for 3D中,style.set_markerFile更换了图片,但是在场景中依然是以前的图片如何处理?
答:这是缓存导致的,处理办法:清除iServer端output目录下和客户端本地的缓存,重新浏览即可。

问:SuperMap iClient for JavaScript在map里单独加载一个vector图层吗?
答:可以,vectorLayer的isBaselayer默认是false,需要改为true,另外需要设置bounds。

问:在SuperMap iClient for javascript中使用SuperMap.Animator实现动画效果,为什么动画速度总是忽快忽慢,setSpeed()调整播放速度也没有效果?
答:Animator动画的运行快慢主要由setSpeed播放速度和setFrameRate帧率共同决定;setSpeed()方法可以修改播放速度,即修改的是每次播放的数据之间的时间间隔,指在用户的数据之间没两次播放的时间跳跃;setFrameRate()方法可以修改帧率,表示修改每秒播放的次数

问:在SuperMap iClient for 3D中,iServer版本与桌面软件版本一致,发布场景缓存后,为什么有时候会出现模型消失的情况?
答:清除iServer端output目录下和客户端本地的缓存,重新浏览即可。

问:在SuperMap iClient for 3D中,如何为模型添加文本标注?
答:目前有以下三种方式:1.在桌面软件里边做标签;2.在跟踪层添加文本对象;3.在客户端制作标签专题图。

问:在SuperMap iClient for 3D中,获取点位置信息返回高程值为0,是什么原因?
答:请确保场景中加载了地形数据,altitude只能获取地形数据的高程值。

问:SelectFeature控件,SelectCluster控件,客户端专题图的鼠标事件共用时,发生冲突,如何解决?
答:1.方案一:将矢量图层vectorlayer叠加在聚散图层或者客户端专题图之上,即map.addLayers[底图,聚散图层/专题图,矢量图层]
2.方案二:聚散图层和矢量图层共用时,可将聚散图层加入selectFeature控件里,如SuperMap.Control.SelectFeature([vectorlayer,clusterLayer],{onSelect:onFeatureSelect}),addLayers()里,图层顺序不受限制

问:iClinet for android 自定义放大缩控件,为什么没缩放效果?
答:动态缩放过程,不能使用mapview.zoomOut()这种方式,需要使用mapview.getController().zoomOut();

问:iServer发布的wmts服务,iClient for javascript使用Layer.WMTS对接,resolution如何计算
答:700版本以上的iServer发布wmts后会在getCapability的能力文件描述中给出resolution;700以下的iServer描述中只给出了比例尺分母,可使用SuperMap.Util.getResolutionFromScaleDpi工具类来计算resolution

问:在iClient for javascript中使用EditFeaturesService进行数据编辑结果返回Fail,报500错误
答:这种情况首先检查改数据服务发布时是否勾选了允许编辑其次检查数据服务的url是否写正确,数据服务的url需要写到数据集名称级别;另外在添加要素时不需要设置geometry的id

问:iClient for Javascript里在客户端构造了一个多边形Polygon,如何知道它在地理坐标系地图上的球面测地面积和周长
答:可以使用SuperMap.Geometry.Polygon的父类SuperMap.Geometry.Collection的方法getGeodesicArea和getGeodesicLength来计算得到近似测地面积和周长

问:在iClient for ios中如何在地图上绘制圆形
答:使用Markers and other layers包中的RMCircle;[RMCircle initWithContents:(RMMapContents*)aContents radiusInMeters:(CGFloat)RadiusInMeters latLong:(RMLatLong)point]

问:iClient for 3D中如何实现对太阳位置的控制?
答:设置sun类中的dateTime属性即可。

问:阀门类的小模型,生成缓存后,客户端无法选中,桌面中是可以的。
答:生成缓存时,尝试不勾选LOD。

问:发布场景缓存,客户端浏览场景、模型不显示?
答:使用跟iServer配套的桌面,重新生成。

问:iClient for Javascript中如何使用除SuperMap默认支持的坐标系(EPSG:4326,CRS:84,urn:ogc:def:crs:EPSG:6.6:4326,EPSG:900913,EPSG:3857,EPSG:102113,EPSG:102100)外的其他坐标系进行坐标投影转换
答:JavaScript提供的坐标投影转换类SuperMap.Projection 用于在客户端进行投影变换。对于自定义坐标系需引入Proj4js.js包(…/exampless/proj4js/lib/);例如定义epsg代码为32652的坐标系:Proj4js.defs[“EPSG:32652”]=“参数串”;参数串在pro4js网站获取http://spatialreference.org/ref/epsg/[epsg代码]/proj4/,坐标系定义后即可以"EPSG:32652"使用

问:Arcgis发布的WFS,为什么使用客户端查询的时候,图形是倒过来的。
答:修改Arcgis发布WFS服务里面的经纬度顺序,如原本是YX 则修改为XY。

问:iClient for Javascript中如何控制一幅地图子图层可见状态
答:通过设置图层的layersID来控制。 layer.params.layersID = “[0:0,1,2,3]”;layer.redraw();其中0,1,2,3为子图层索引,当所有子图层都不可见时应为"[]";或使用SetLayerStatusService获取临时图层资源id进行控制

问:SuperMap iClient 7C for JavaScript如何设置点密度专题图点的颜色?
答:设置SuperMap.REST.ThemeDotDensity的style中的lineColor属性即可。

问:iClinet for Javascript中如何计算两个经纬度坐标点的真实球面距离
答:可使用SuperMap.Util.distVincenty工具类,传入两个经纬度坐标点计算得到两点在椭球表面的距离,单位千米

问:SuperMap iClient 7C for Flash 如何设置图层透明度?
答:设置TiledDynamicRESTLayer 的alpha属性可以控制图层的透明度。

问:SuperMap iClient for Javascript中如何让Feature.vector支持鼠标右键事件的响应
答:使用SuperMap.Control.SelectFeature控件,在其callbacks属性里写入右键鼠标事件的回调函数;var callbacks={rightclick:function(currentFeature){//todo}};var selectFeature = new SuperMap.Control.SelectFeature(vectorLayer,{callbacks: callbacks});

问:SuperMap iClient 7C for Android如何添加比例尺控件?
答:SuperMap iClient 7C SP2 for Android 版本才能添加比例尺控件,调用MapView.showScaleControl(true); 方法即可。

问:iClient for 3D中如何实现模型的多选?
答:通过Selection3D类的append方法,向三维选择集中加入指定的对象数组即可实现对模型的多选。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值