SuperMap GIS基础产品WebGIS FAQ集锦(5)
【iClient】iClient for Classic如何设置服务跨域时,请求json而不是jsonp?
【解决办法】可全局修改SuperMap.Util.isInTheSameDomain方法,使其返回为true;例如:
SuperMap.Util.isInTheSameDomain= function (){
return true
}
【iClient】iClient for Openlayers 矢量图层添加要素,getFeatures获取要素的个数比地图显示上多,部分要素未显示?
【问题原因】排除要素重复的因素,是因为添加的feature要素的id重复
【解决办法】可以遍历要素数组,赋予唯一的id值即可
【iClient】Leaflet服务器端专题图,如何设置标签沿线标注?
【解决方法】使用labelExpression,如果多个字段,使用“”“||”连接。
代码参考:
themeLabel = new L.supermap.ThemeLabel({
labelExpression:"NAME"+"||"+"SmLength",
alongLine: new L.supermap.ThemeLabelAlongLine({
isAlongLine:true,
alongLineDirection:L.supermap.AlongLineDirection.NORMAL,
}),
overlapAvoided:false,
smallGeometryLabeled:false
});
themeParameters = new L.supermap.ThemeParameters({
themes: [themeLabel],
datasetNames: ["Rivers"],
dataSourceNames: ["World"]
});
【iClient】基于Vue2开发的iClient项目,迁移至Vue3能否兼容?
【解决方案】iClient兼容Vue2和Vue3,可以进行迁移。
【iClient】Leafleat切换地图控件,如何设置默认显示哪张地图?
【解决方案】可以通过设置初始状态来指定默认显示的图层。例如,可以使用map.addLayer()方法将特定的图层添加到地图中,并且在创建L.control.layers的时候,将该图层作为第一个参数传入。
【iClient】sql查询多个数据集,如何分辨查询结果归属的数据集?
【解决方案】打印查询结果,找到serviceResult.result.datasetInfos,其中包含featureRange信息,可以判断哪些要素属于该数据集。
【WebGIS】OpenLayer初始化地图,要加载2分钟左右才能显示出来,有什么办法可以加快显示速度?
【解决办法】底图加载缓慢有很多原因,从数据处理到发布服务、前端加载整个过程都会有影响:
1、数据如果存储在数据库,可以尝试新建文件型数据源,将数据集复制到文件型数据源中发布服务预览,对比数据库的加载速度。数据量比较大的情况下加载地图服务确实需要时间加载渲染,建议对地图切地图瓦片,然后发布瓦片为地图服务,加载速度更快。如果一定要动态出图(不切瓦片)的话,动态出图 11版本性能高, 相比10系列有31%左右提升。
2、iserver所在的服务器内存、cpu是否高,服务的并发量是否过大,这会影响底图加载;
3、还有就是网络原因,可以排查一下iserver服务器和web端所在服务器的带宽,传输过程网速的网速也有影响,或者打开其他页面查看是否存在加载缓慢的问题。
【WebGIS】在OpenLayer地图上,TileLayer图层如何裁剪ImageLayer图层?
【解决办法】TileSuperMapRest可以做矢量裁剪分析,ImageCanvas数据来源是一个 canvas 元素,其中的数据是图片,不同数据源之间无法做裁剪。地图如果是通过iserver发布的地图服务,可以通过TileSuperMapRest加载,设置clipRegion地图显示裁剪的区域。
【WebGIS】SuperMap.Geometry格式r如何转化成geojson格式?
【解决办法】例如:
var smGeometry = new SuperMap.Geometry.Point(-111.04, 45.68);
var smGeoJSON = new SuperMap.Format.GeoJSON();
var geoJSONStr = smGeoJSON.write(smGeometry);
【iClient】iClient for MapboxGL如何通过tileimage资源加载临时图层?
【解决办法】tileimage资源加载通过layersID获取进行切片的地图图层 ID,即指定进行地图切片的图层,可以是临时图层集,也可以是当前地图中图层的组合。如果此参数缺省则对全部图层进行切片。layersID 可以是临时图层创建时 templayers 的 ID,如 layersID=382139acf0,也可以是当前地图中的某些图层的 ID 编号。
示例 tiles URL:https://iserver.supermap.io/iserver/services/map-world/rest/maps/World/tileimage.png?scale={scale}&x={x}&y={y}&width={width}&height={height}&origin=%7B%22x%22%3A-180%2C%22y%22%3A90%7D&layersID=756e6e713be74157981492d3b2e0c528_38642d77ea4f42dba92d45ca85d1806e
示例代码:
【iClient】iClient for Classic如何通过token调用设有权限的数据服务?
【解决办法】使用SuperMap.Credential接口,验证token安全信息。
示例代码:
SuperMap.Credential.CREDENTIAL=new SuperMap.Credential("U3WEMRc2Pbaa5m_hxsvI7hEzz_cFUb6zV2xrtunCefpusFTkG-r1wGuAzfO3FBH8gP7ePRhN3Q69KtHpHcls4A..","token");
示例如图:
【iClent】MapBox 点击查询不到数据
【问题原因】使用点去查询线或者点,需要线或者点必须在线或者点上,前端要精细到具体位置很难
【解决办法】将这个点转换成一个面对象,然后是用面对象去查这些点或者线数据集,且设置半径按照zoom层级的增加而减小,zoom较小时屏幕看上去相差很小,其本身确实相距很远
【iClient】iClient for OpenLayers加载json数据发布的wmts服务,发现地图往上偏移,该怎么解决呢?
【问题原因】wmts是根据设置的坐标系起点和范围去排列瓦片的,如果没有设置则默认为全球范围,所以加载时会出现偏移的情况。
【解决方法】在加载wmts服务时,设置坐标系定义起点范围,即配置origin参数。
source: new ol.source.WMTS({
url: "******",
layer: 'world4490',
matrixSet: 'Custom_world4490',
format: 'image/png',
tileGrid: new ol.tilegrid.WMTS({
origin: [-180.0, 83.62359619161411],
extent:[-180.0, -90.0, 180.0, 83.62359619161411],
resolutions: resolutions
}),
style: 'default'
})
【iClient】在iClient for MapboxGL的EChartsGL中使用movelayer方法来移除图层为什么没有效果呢?
【问题原因】由于通过EChartsGL控件添加的数据并不是图层对象,所以使用movelayer方法不生效
【解决方法】直接在EChartsGL对象上再添加layer图层,然后对添加的layer对象使用movelayer方法移除。
【iClient】在iClient for Leaflet中设置聚合间隔后显示效果不对是什么原因导致的呢?
【问题原因】在Leaflet中设置聚合间隔参数maxClusterRadius(指的是一个聚合点的最大影响半径,默认为80,单位是像素);这个主要跟当前界面大小也有关系,需要根据当前界面分辨率来调整;
【解决方法】可通过当前界面分辨率来调整maxClusterRadius参数的大小查看效果,直到调整到一个合适的值
【iClient】已知瓦片比例尺和左上角坐标,如何求右下角坐标?
【解决办法】根据比例尺反推分辨率,算出瓦片实际长宽,就可以计算坐标,计算公式如
【iClient】在iClient开发包中有ol和openlayer文件夹,文件都一样大小,这两文件夹有什么区别?
【解决办法】就是名字不一样,其他没什么不一祥;openlayers在4的时候叫openlayers 5以后一般叫ol;为了让老用户不奇怪,所以保留了openlayers的包
【解决办法】设置maxNativeZoom/minNativeZoom,超出NativeZoom的不再请求,而是放大/缩小原有的。
【iClient】进行SQL查询设置过maxFeatures,但为什么featureCount最大值还是20?
【问题原因】iClient的SQL查询接口默认设置了分页,toindex值默认为19
【解决办法】设置toindex为-1后再设置maxFeatures的值即可