javascript - Leaflet 放大镜插件 - 切换层

标签 javascript html leaflet

我有一张传单 map ,其中我使用 Magnifying Glass plugin并想要切换进出被放大的图层。我有一个“ basemap ”图层,然后是三个我想要放大的图层。我希望能够使用我设置的三个按钮(Btn1、Btn2、Btn3)在这些层之间进行更改。

Magnified_Layer1 将自动使用放大镜进行设置,然后三个按钮将在单击时加载 Magnified_Layer2 和 Magnified_Layer3,并重新加载 Magnified_Layer1。下面是我当前的代码。

我特别感兴趣的是是否有可用于 magnifyingGlass 实例的“添加”和“删除”方法,如果没有,我还可以如何使用相关层动态构建和重建它。

<div class="span9" style="height:100%">
<div id="map"></div>
<div id="centered" style="width:600px;">
<input type="button" id="Btn1" value="Wealth index" onclick="" class="btnStyle span3" />
<input type="button" id="Btn2" value="PPI" onclick="" class="btnStyle span3" /> 
<input type="button" id="Btn3" value="Income" onclick="" class="btnStyle span3" />

<script>

    // initialize the map + minimum zoom if just focusing on one country
    var map = L.map('map',{minZoom: 7, maxZoom: 7,attributionControl: false,zoomControl: false, scrollWheelZoom:false}).setView([23.814602, 90.413961], 12);
    map.dragging.disable()
    // Add zoom to extent button (see stylesheet and .js file in header)
    <!-- map.addControl(new L.Control.ZoomMin()) -->

    //Setting Maximum bounds for zooming and panning (Top left and bottom right from google maps)
    var bounds = L.latLngBounds([[26.548387, 89.144284], [20.580493, 92.103854]]);
    map.setMaxBounds(bounds);
    map.on('drag', function() {
        map.panInsideBounds(bounds, { animate: false });
    });


    //Load GeoJSON using Ajax Plugin (Chrome not allowing cross HTTP requests..)
    <!-- var geojsonLayer = new L.GeoJSON.AJAX("Bangladesh2.json",{style:style -->
                                            <!-- ,smoothFactor: 0.1}).addTo(map);  -->


    // Adding layers and bounds
    var Basemap_Bounds = new L.LatLngBounds(
        new L.LatLng(26.64163201,88.00822613),
        new L.LatLng(20.73330104,92.67489093));

    var Magnified_Bounds = new L.LatLngBounds(
        new L.LatLng(26.6344108958,88.02834),
        new L.LatLng(20.5760799858,92.67000481));


    map.fitBounds(bounds);


    var Basemap = new L.ImageOverlay("img/Basemap.png", Basemap_Bounds).addTo(map);
    var Magnified_Layer1 = new L.ImageOverlay("img/Magnified_Layer1.png", Magnified_Bounds);
    var Magnified_Layer2 = new L.ImageOverlay("img/Magnified_Layer2.png", Magnified_Bounds);        
    var Magnified_Layer3 = new L.ImageOverlay("img/Magnified_Layer3.png", Magnified_Bounds);

// Setting up Magnifying Glass
    var magnifyingGlass = L.magnifyingGlass({
      layers: [Magnified_Layer1],
      zoomOffset: 0,
      radius: 75
    }).addTo(map);    

最佳答案

事实证明我使用的是旧版本的传单(0.7.2),该功能不支持。

我已更新到最新版本 (1.0.3),现在可以使用 addLayer 和 removeLayer 函数切换放大镜。

关于javascript - Leaflet 放大镜插件 - 切换层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953884/

相关文章:

javascript - 在页面加载期间使用 Leaflet 预加载图层

javascript - D3Tip 尖端放置不一致

javascript - 在一系列 promise 成功或失败后继续

javascript - 在一定比例的窗口大小上不断更改 div 大小

html - WordPress 主题 - 找不到样式源文件

javascript - HTML 样式 ="overflow:hidden"使用 JavaScript/jQuery 访问内部溢出的元素?

javascript - 如何同时使用 onclick 和目标 ="_blank"

javascript - CKEditor 不显示图像数据

javascript - 传单:是否可以自定义缩放级别?

javascript - 带传单的多边形标签