首页 > 编程知识 正文

地形图转换坐标系,mapinfo在线地图加载不出来

时间:2023-05-03 20:23:23 阅读:32178 作者:2439

作者: LX

背景WebGIS开发必然会出现地图展示问题,但不同项目展示的地图坐标系并不统一,不同地图可能存在不同的坐标系,有时在与地图对接时没有设置坐标系参数因此,我们将介绍SuperMap iClient各地的图库如何加载不同的坐标系地图,以避免在实际项目开发中发生类似的情况

iClient各地的图库如何加载不同的坐标系地图,首先,SuperMap iClient 9D和更高版本集成了四种类型的图库: Leaflet、OpenLayers、MapboxGL和Classic 因此,以下小编将分别介绍这些地图库在加载地图时应如何对应于不同的坐标系。一、 iClient for Classic

iClient for Classic会自动读取服务的坐标系,因此不需要额外设置项目。

例如china2000坐标系地图:

二、 iClient for Leaflet、iClient for OpenLayers

iClient for Leaflet和iClient for OpenLayers比较类似不同类型的坐标系地图,下面将对其进行总结。 与iClient for Classic不同,他们不会自动读取服务的坐标系。 如果不设置项目,将无法正确绘制。 必须自己设定坐标系信息。1、 默认支持的坐标系

iClient for Leaflet和iClient for OpenLayers默认支持EPSG:4326。 EPSG:3857,平面没有投影坐标系。 不需要自己定义,只要在停靠地图时设定与地图参数对应的坐标系即可。

关于具体坐标系参数的设定方法,请直接参照官方网站的例子。

iclientforleaflet:http://I client.SuperMap.io/examples/leaflet/examples.html # iserver-map

iclientforopenlayers 33603358 I client.SuperMap.io/examples/openlayers/examples.html # iserver-map 3358 ww.Sina

对于默认情况下不支持的坐标系,必须在iClient for leaflet和iClient for OpenLayers中首先在proj4中定义坐标系,然后将定义的坐标传递给地图的坐标系参数。 下面以Leaflet对china2000坐标系(EPSG:4490 )贴图为例。

1 )引用Proj4js库

script type=' text/JavaScript ' include=' proj4' src=' ./dist/leaflet/include-leaflet.js '/script2)定义

参考https://epsg.io/网站上的EPSG:4490定义如下:

因此,EPSG:4490坐标系定义代码如下:

proj4.defs(EPSG:4490,) proj=longlat ellps=GRS80 no_defs ); 3 )设定坐标系参数,加载地图

var URL=' http://I客户端. SuperMap.io/iserver/services/map-China 400/rest/maps/China _ 4490 '; var CRS=l.proj.CRS (epsg :4490 ),{bounds:l.bounds([-180,-85.05112877996838],[180, 85.0511287999] varmap=l.map(map、{ crs: crs、center:(7.910156223922968、0.7031249925492489}、maxZoom: 5 将代码直接复制到http://iclient.supermap.io并运行时,结果如下:

有关如何定义和使用Proj4js坐标系的详细信息,请参阅博客《JavaScript利器分享之Proj4js》

2、 默认不支持的坐标系

这当然有很大的限制,因为本机MapboxGL只支持3857个坐标系。 因此,SuperMap iClient产品团队基于本机MapboxGL扩展了扩展库mapbox-gl-enhance.js,当前扩展库支持EPSG:4326和EPSG3336

iClient for MapboxGL向不同坐标系的开发代码如下所示。

1 )引入js。 以上坐标系的地图除加载3857坐标系的地图外,需要引入扩展库mapbox-gl-enhance.js

EPSG:3857地图:

script type=' text/JavaScript ' src=' ././dist/mapboxgl/include-mapboxgl.js '/script epsg 33604326、EPSG333336

script type=' text/JavaScript ' include=' map box-GL-enhance ' src=' ./dist/mapboxgl/include-mapboxgl.discox

var URL=' http://I客户端. SuperMap.io/iserver/services/map-China 400/rest/maps/China _ 4490 '; varmap=newmapboxgl.map (container : ' map ),/containeridstyle : (version ' : ) 8,' sources ' : { ' raion ' tileSize': 256,' tiles': [url],' tilesize'3360,' tiles ' : [ URL ] ' layers ' : [ ] ' source': 'raster-tiles ',' mining crs: 'EPSG:4490 ',center : [ 101.74721254733845,32.5665352689922 查看结果:

有关更多坐标系与iClient for MapboxGL对接的信息,请参见官网iClient for MapboxGL示例-多坐标系

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。