Daha çox

OpenLayers 3-də switchLayer ilə addLayer?


OpenLayers 3-də qatların dəyişdirilməsi üçün bu nümunəni tapdım.

function switchLayer () {var CheckLayer = $ ('# layerwitcher input [name = layer]: check'). val (); üçün (i = 0, ii = laylar.length; i  
  • Bu bir çox baza qat xəritəsinə sahib olmaq üçün əladır ... Bundan əlavə, eyni xəritəyə onay qutusu bölməsi vasitəsilə bu xəritələrə bir çox xüsusiyyət / vektor təbəqəsi əlavə etməyə imkan verən qat (addLayer) əlavə etmək bacarığına da ehtiyacım var. Fikirlər? Mən belə bir şey düşünürdüm:

    $ ("# layerwitcher input [name = layer]"). change (function () {addLayer ()}); var layer = []; qat [4] = yeni ol.layer.Image ({mənbə: yeni ol.source.ImageWMS ({url: 'http://demo.opengeo.org/geoserver/wms', params: {'LAYERS': 'topp : States '}, serverType:' geoserver '})})]; qat [5] = yeni ol.layer.Image ({mənbə: yeni ol.source.ImageWMS ({url: 'http://demo.opengeo.org/geoserver/wms', parametrlər: {'LAYERS': 'ölkələr '}, serverType:' geoserver '})})]; qat [6] = yeni ol.layer.Image ({mənbə: yeni ol.source.ImageWMS ({url: 'http://demo.opengeo.org/geoserver/wms', parametrlər: {'LAYERS': 'point_clouds '}, serverType:' geoserver '})})];

    amma işə yaramır.


    Qatlar əlavə / silməyə çalışırsınız?

    Bu kimi təbəqələri göstərməklə / gizlətməklə oxşar bir şey edə bilərsiniz

    Buna bənzər bir şeyin (və bir neçə başqa təbəqənin) olduğunu düşünsək:

    var layer1 = yeni ol.layer.Tile ({mənbə: yeni ol.source.Stamen ({qat: 'toner'})}); var layer2 = yeni ol.layer.Tile ({mənbə: yeni ol.source.Stamen ({qat: 'suluboya'})}); var viewObject = new ol.View ({center: [0, 0], zoom: 2}) var mapObject = new ol.Map ({target: 'map'}); mapObject.addLayer (raster); mapObject.addLayer (vectorLayer); mapObject.setView (viewObject);

    HTML-də onay qutularını əlavə edin:

      

    Sonra, ssenari bölməsində:

    $ ('input [type = checkbox]'). on ('change', function () {var layer = {layer1: layer1, layer2: layer2} [$ (this) .attr ('id')]; layer. setVisible (! layer.getVisible ());});

    btw, işlək vəziyyətə gətirmək üçün JQuery əlavə etməlisən.


    İzləyirəm Mauro Vieira Gonçalves cavab Bir iş nümunəsi tətbiq edə bildim. Yalnız orijinal kodunda bəzi düzəlişlər etdim.

    var layer1 = new ol.layer.Tile ({mənbə: yeni ol.source.Stamen ({qat: 'toner', görünürlük: false})}); var layer2 = new ol.layer.Tile ({mənbə: new ol.source.Stamen ({qat: 'suluboya', görünürlük: false})}); var viewObject = new ol.View ({center: [0, 0], zoom: 2}) var mapObject = new ol.Map ({target: 'map'}); mapObject.addLayer (qat1); mapObject.addLayer (qat1);

    HTML onay qutuları:

      

    Qat görünürlüğünü (true) off (false) olaraq təyin etmək üçün JQuery:

    $ ('input [type = checkbox]'). on ('change', function () {var layer = {layer1: layer1, layer2: layer2} [$ (this) .attr ('id')]; layer. setVisible (! layer.getVisible ());});


    Videoya baxın: GeoServer. OpenLayers. Apache (Oktyabr 2021).