zoukankan      html  css  js  c++  java
  • LeaFlet中切片图层使用自定义坐标系

    leaflet给定的坐标系中规中矩,就那几个,如果在项目遇到了需要用到我国2000一类的坐标系,怎么办?解决方法只有一个那就是自定义坐标系,由于leaflet是轻量性的,自定义坐标系需要借助Proj4Leaflet,leaflet的生态非常好,插件很多,这是他的有点也是它的缺点。

    一、如何定义坐标系

    1、引入插件

    2、查询所要的定义的坐标系的EPSG,然后https://epsg.io/到查询,输入3006,点击search,将搜寻的结果点进去

    选择proj.4,将红框部分复制

    二、构造函数

    L.Proj.CRS(code, proj4def, options)

    1、code :例如EPSG:3006

    2、proj4def:刚才上面复制的,例如:"+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"

    3、options:一个参数组,有几个参数

    • origin:切片原点
    • scales:比例尺,这个和resolutions,需要设置其中的一个
    • resolutions:分别率,这个设置可以通过你加载的切片图层中找,例如在geoserver中的grid查询
    • bounds:坐标的范围,该参寻找见下图Projected bounds:

    三、demo

    var crs = new L.Proj.CRS('EPSG:3006',
    	'+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',
    	{
    		resolutions: [
    			4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8
    		],
    		origin: [-1200000.000000, 8500000.000000 ],
    		bounds:  L.bounds( [-1200000.000000, 8500000.000000], [4305696.000000, 2994304.000000])
    	}),
    	map = new L.Map('map', {
    		crs: crs,
    		continuousWorld: true,
    	});
    
    new L.TileLayer('https://api.lantmateriet.se/open/topowebb-ccby/v1/wmts/token/'+ token +'/?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=topowebb&STYLE=default&TILEMATRIXSET=3006&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=image%2Fpng', {
    	maxZoom: 9,
    	minZoom: 0,
    	continuousWorld: true,
    	attribution: '&copy; <a href="https://www.lantmateriet.se/en/">Lantmäteriet</a> Topografisk Webbkarta Visning, CCB',
    }).addTo(map);
    map.setView([59.3167, 18.0667], 7);
  • 相关阅读:
    Uva10305(dfs)
    Uva572
    Uva122
    Uva679
    Uva136
    Uva489
    Uva133
    Uva1339
    Uva1588
    《世纪的哭泣》读后感 读书笔记
  • 原文地址:https://www.cnblogs.com/tuboshu/p/10752287.html
Copyright © 2011-2022 走看看