【问题标题】:Leaflet custom projection传单自定义投影
【发布时间】:2013-12-04 09:08:03
【问题描述】:

我从 Leaflet 开始,我正在尝试使用自定义投影 (EPSG:23030) 制作一个示例,以显示来自 WMS 服务的图层。如果我不知道决议,我该怎么做?我有这段代码,使用插件 Proj4Leaflet,但它不起作用:

var crs23030 = new L.Proj.CRS('EPSG:23030','+proj=utm +zone=30 +ellps=intl +units=m +no_defs');
var map = new L.Map('map', {
    crs: crs23030
});

L.tileLayer.wms('http://www.juntadeandalucia.es/servicios/mapas/callejero/wms', {
    layers: 'CallejeroCompleto',
    format: 'image/jpeg',
    maxZoom: 13,
    minZoom: 0          
}).addTo(map);

map.setView(new L.LatLng(37.24344,-4.23522), 7);

【问题讨论】:

    标签: leaflet


    【解决方案1】:

    如果忽略分辨率/比例,它将默认为 Leaflet 的球形墨卡托实现所使用的,这很可能不适合其他投影。

    您使用的分辨率取决于底层磁贴服务器:

    • 如果它是“真正的”WMS 服务器,例如 GeoServer 或类似服务器,您可以制定任何您喜欢的并对您的用户有用的分辨率。 WMS 服务器将处理任何事情。
    • 如果是带有 WMS 接口的切片缓存,例如 GeoWebCache,则需要提供切片服务器配置中定义的分辨率(GWC 术语中的网格集)

    另外请注意,对于切片缓存,您还必须提供网格集的原点,否则 Leaflet 的请求将不会与缓存的网格对齐。

    【讨论】:

    • 好的,那我不知道是强制建立决议吗?
    • 是的,分辨率和/或比例是强制性的,除非您想使用 Leaflet 的默认值。
    【解决方案2】:

    好的,我明白你的意思,我已经尝试过了:

    var crs23030 = new L.Proj.CRS('EPSG:23030','+proj=utm +zone=30 +ellps=intl +units=m +no_defs',
                {
                    resolutions: [1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5]                 
                }
        );
    

    它有效。我的结论是,如果我不知道这些决议,我必须把它说得差不多。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2018-04-18
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多