Leaflet.Basemaps与leaflet-providers区别

简述一下,Leaflet.Basemaps与leaflet-providers都可以完成图层切换功能,但是Leaflet.Basemaps是加载在L.Map层的,而leaflet-providers是在tilelayer加载,也就是说leaflet-providers是在同一种投影方式下进行切换。

leaflet-providers在L.Map上只有一层tilelayer,而Leaflet.Basemaps在L.Map上可以加载很多层tilelayer

如果想在L.Map层上指定不同的投影方式,只能选择使用Leaflet.Basemaps。

Leaflet.Basemaps
Leaflet.Basemaps与leaflet-providers区别

L.Control.Basemaps = L.Control.extend({
	_map: null,
	includes: L.Evented ? L.Evented.prototype : L.Mixin.Event,
	options: {
		position: "bottomright",
		tileX: 0,
		tileY: 0,
		tileZ: 0,
		layers: []
	},
	basemap: null,
	basemapNodes: {},

leaflet-providers
Leaflet.Basemaps与leaflet-providers区别

L.TileLayer.ChinaProvider = L.TileLayer.extend({

    initialize: function(type, options) { // (type, Object)
        var providers = L.TileLayer.ChinaProvider.providers;

        var parts = type.split('.');

        var providerName = parts[0];
        var mapName = parts[1];
        var mapType = parts[2];

        var url = providers[providerName][mapName][mapType];
        options.subdomains = providers[providerName].Subdomains;

        L.TileLayer.prototype.initialize.call(this, url, options);
    }
});