您好,您的4490的瓦片是rest地图还是发布的瓦片服务?如果是rest地图服务,可以使用动态投影转换,叠加到3857的地图上;如果是发布的瓦片服务,就不能进行动态投影,可以在桌面产品中将数据进行投影转换和配准,将地图坐标系转为3857,再切瓦片后发布服务。
你好, rest地图还是发布的瓦片服务?如果是rest地图服务, 这个怎么判断? 对方给的一个链接地址,删除后面的坐标、缩放倍数等参数就可以定位到这个页面。 我看到你的贴图是 leaflet, 我天地图加载使用的是 openlayers, 对应使用TileSuperMapRest 这个类添加瓦片, 但看源码只支持3857 和 4326。
默认是3857和4326,但是可以自定义坐标系,这样您就可以加载4490的天地图,不用考虑地图动态投影。自定义坐标系可以参考我们的博客:https://blog.csdn.net/supermapsupport/article/details/101348811
您好,OpenLayers的demo可以参考这一篇博客:https://blog.csdn.net/supermapsupport/article/details/88967390 ,其中resolutions也可以使用SuperMap iClient for OpenLayers中封装的方法getResolutionFromScale获得。
proj4.defs("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs +type=crs"); return import('@supermap/iclient-common').then(({ CommonUtil }) => { let resolutions = CommonUtil.getResolutionFromScale(3.461454994642238E-6, 'degrees') // import * as olProj from 'ol/proj'; const projection = olProj.get('EPSG:4490'); console.log(resolutions, 'resolutions是计算出的某个值'); console.log(projection, 'projection值一直是null?'); // setExtent([这里的区间值从哪里获取?]) projection.setExtent([8374565.292377971, 1866182.1613285837, 1.4947981223720774E7, 7070412.849097984]);
有几个疑问点: 1. proj4.defs() 定义的在后文没有用过; 【 这里看了源码确实是需要提前定义的,可能是个异步加载吧?
* Additional projection definitions can be registered with `proj4.defs()` any
* time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't
* know in advance what projections are needed, you can initially load minimal
* support and then load whichever are requested.
】
2. olProj.get('EPSG:4490') 返回值是null 【 解决方案: import * as olProjections from 'ol/proj/projections'; const projection = new olProj.Projection({ code: 'EPSG:4490' }); olProjections.add('EPSG:4490', projection) 这样再调用get 返回的就是 projection 实例 】
3. projection.setExtent([]) 后面的参数从哪里获取? 4. 通过TileSuperMapRest构建的 layer, 添加到地图上会, TileSuperMapRest 内的 tileUrlFunction 就会死循环执行。不知道为啥?