在传单中,如何改变" crs"和其他"地图选项"?

时间:2015-06-16 08:22:48

标签: leaflet mapbox

例如,我创建了一个这样的地图:

    map = L.map('map',
        {maxZoom: 17,
        attributionControl: false,
        zoomControl: false}
    )

后来,我想改变" crs"并为map对象添加一个键。

我希望可能有一个名为setOption的方法,如下所示:

map.setOption({crs:L.CRS.BEPSG3857, customOption: true})

但不幸的是,没有这样的setOption方法。有没有人有关于如何更改传单地图对象的Map option的想法?

2 个答案:

答案 0 :(得分:3)

请查看此示例,了解如何动态更改crs:http://jsfiddle.net/alekzonder/qxdxqsm3/

var center = map.getCenter();

if (...) {
   map.options.crs = L.CRS.EPSG3395;
} else {
   map.options.crs = L.CRS.EPSG3857;
}

map.setView(center);

map._resetView(map.getCenter(), map.getZoom());

答案 1 :(得分:0)

我有类似的问题。我需要动态设置scrollWheelZoom选项。

我正在使用L.version 1.3.1

如果map init上的scrollWheelZoom选项为true,它将启用相应的Handler。 因此,我们需要手动启用/禁用处理程序,以将更改应用于地图。

List of handlers/map-properties:boxZoom,doubleClickZoom,拖动,键盘,scrollWheelZoom,点击,touchZoom

My solution看起来像这样:

class MyMap {

    // constructor(props) {
    //  ...
    // }

    // getMapElement(){
    //  ...
    // }

    // getBaseLayer(){
    //  ...
    // }

    initMap( mapOptions ){
        if ( ! this.map  ) {
            this.map = L.map( this.getMapElement(), mapOptions );
            this.getBaseLayer().addTo( this.map );
        }
    }

    setMapOptions( newMapOptions ){
        // loop newMapOptions object
        for ( let newMapOptionKey in newMapOptions ) {
            if( newMapOptions.hasOwnProperty(newMapOptionKey)) {
                this.setMapOption( newMapOptionKey, newMapOptions[newMapOptionKey] );
            }
        }
    }

    setMapOption( newMapOptionKey, newMapOptionVal ){
        // set map option
        L.Util.setOptions( this.map, {[newMapOptionKey]: newMapOptionVal});
        // apply option to handler
        if ( this.map[newMapOptionKey] instanceof L.Handler ) {
            if ( newMapOptionVal ) {
                this.map[newMapOptionKey].enable();
            } else {
                this.map[newMapOptionKey].disable();
            }
        }
    }

}

这适用于scrollWheelZoom选项。认为它应该对启用/禁用处理程序的所有选项都有效。因此它可能适用于您的customOption,但不适用于crs选项。