在Leaflet中自定义4490坐标系

项目背景:用leaflet中加载天地图,并采用4490坐标系

问题:leaflet默认采用EPSG3857坐标系,也定义了EPSG4623坐标系,这两种坐标系比较通用,也能够满足大部分的开发需求。

鉴于项目的特殊性,在开发过程中使用proj4proj4leaflet自定义了4490坐标系,特此记录并分享出来,可以让更多人能够快速处理此类问题。

const CRS_4490 = new L.Proj.CRS("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs", {
  resolutions: [
      1.40625,
      0.703125,
      0.3515625,
      0.17578125,
      0.087890625,
      0.0439453125,
      0.02197265625,
      0.010986328125,
      0.0054931640625,
      0.00274658203125,
      0.001373291015625,
      6.866455078125E-4,
      3.4332275390625E-4,
      1.71661376953125E-4,
      8.58306884765625E-5,
      4.291534423828125E-5,
      2.1457672119140625E-5,
      1.0728836059570312E-5,
      5.364418029785156E-6,
      2.682209064925356E-6,
      1.3411045324626732E-6
  ],
  origin: [-180, 90]
});

var map = L.map('map', {
  center: [39.750837, 116.148174],
  zoom: 10,
  crs: CRS_4490
})

"EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs"  这段参数可在https://epsg.io/4490 查找,自定义其他坐标系亦是如此。resolutions是缩放,origin是原点,这几个参数尤为重要。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Leaflet 默认使用 WGS84 坐标系,也就是经纬度坐标系。如果你需要使用不同的坐标系,可以使用 Proj4Leaflet 插件来实现。 首先,你需要引入 Proj4js 库和 Proj4Leaflet 插件: ```html <!-- 引入 Proj4js 库 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.6.1/proj4.js"></script> <!-- 引入 Proj4Leaflet 插件 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4leaflet/1.1.0/proj4leaflet.min.js"></script> ``` 然后,在创建地图对象时,使用 `crs` 属性指定坐标系: ```javascript // 定义坐标系 var crs = new L.Proj.CRS( 'EPSG:26910', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs', { origin: [-20048966.10, 30240991.50], // 坐标系原点 resolutions: [ 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5, 0.25, 0.125, 0.0625 ] // 分辨率列表 } ); // 创建地图对象 var map = L.map('map', { crs: crs }); // 添加底图 var baseLayer = L.tileLayer( 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', { attribution: 'Esri' } ).addTo(map); // 设置地图心和缩放级别 map.setView([45.5231, -122.6765], 10); ``` 在上面的代码,我们定义了一个 UTM 坐标系(EPSG:26910),并使用 Proj4Leaflet 插件来实现 Leaflet 对这个坐标系的支持。在创建地图对象时,我们将 `crs` 属性设置为这个坐标系,然后在添加底图和设置地图心和缩放级别时,就可以使用 UTM 坐标系下的经纬度坐标来指定位置了。 需要注意的是,不同的坐标系可能有不同的分辨率列表,你需要根据自己的需求来定义。同时,坐标系的原点也可能有所不同,需要根据实际情况来设置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值