2016-05-25 10 views
3

私はいくつかのマップを作成しましたが、リーフレットとジオサーバーを使用してそれらを公開したいと思います。すべてがうまくいっている、私はレイヤーコントロールを使用してレイヤーを変更することができますが、私は自分のボタンを使ってそれをしたいです。問題は、私はどのように把握できないということです。私はすべてのボタンを作成しているだけで、WMSタイルレイヤーをクリックしてマップに追加する機能を作成したいだけです。自分のボタンでWMSレイヤーのオン/オフを切り替える

ご協力いただければ幸いです。ここで私はこれまで試したものですが、それは仕事をdoesntの:

function appear(){ 
    var floodToday = L.tileLayer.wms("http://localhost:8080/geoserver/wms", { 
     layers: 'FloodlayerWMS', 
     format:'image/png', 
     version: '1.1.1', 
     transparent: true 
    }) 
    map.addLayer(floodToday); 
} 
$(".WToday").on("click",appear); 

私はすでに、この答えが見つかりました:Hide/Show layerGroups in Leaflet with own Buttonsをそれが有用であることが証明されていません。私は私の問題がwmsのタイルレイヤの使用に関連していると推測していますが、私はそれをどのように回るのかはわかりません。私はJavascriptとjQueryにはほとんど知識を持っていませんが、コードを少し周りいじると異なるオプションを試した後、これは私のためにどのような作品であるようHudsonPHの答え@

UPDATE

は私のために複雑に少しでした:

$("#WToday").click(function(event) { 
    var floodToday = L.tileLayer.wms("http://localhost:8080/geoserver/wms", { 
    layers: 'FloodlayerWMS', 
    format:'image/png', 
    version: '1.1.1', 
    transparent: true 
    }) 
map.addLayer(floodToday); 
}); 

ありがとうございました。

+0

テスト用にnon-wmsレイヤーを使用しようとしましたか? – IvanSanchez

+0

@IvanSanchez:いいえ、しかし、問題はクリックイベントが関数をトリガーしていると思います。タイムアウト時に関数を設定するとうまく動作します。問題はクリックイベントを登録しないという事実のようです。 –

答えて

1

トリムを使用して名前を比較し、イベントをトリガーすることができます。 OBS:私は値

$("[name='leaflet-base-layers']").parent().each(function (index) { 
      $layerControl = $(this); 
      if ($that.attr("Your-Date-Attribute").trim() == $layerControl.find("span").text().trim()) {         
       $(this).find("input").trigger("click"); 
      } 
     }); 
+0

私は実際にjavascriptとjqueryで経験していないので、あなたがそこで何をしたのか本当に分かりません。あなたはここで何をしているのか説明してください。私はそれを実装しようとすることができますし、病気の様子を教えてください。 –

+0

jsとjqueryを学ぶ必要があります。何も拡張できないことが分かっていれば、永遠の心です)。 [Js](http://www.w3schools.com/js/default.asp)、 [Jquery](http://www.w3schools.com/jquery/default.asp) – HudsonPH

+0

これを見てください:https:///jsfiddle.net/arzlo/aemvtufj/3/ – HudsonPH

0

は、より一般的なことを試してみてください取得するには、データの属性を使用していました。下記参照。

$("#WToday").click(function(event) { 
    const model = new Model().init("http://localhost:8080/geoserver/wms","FloodlayerWMS"); 
    const layerWMS = new Facade().requestWMS(model); 
    map.addLayer(layerWMS); 
}); 
//Module Facade 
let Facade = (function() { 
    function _requestWMS(model) { 
    return L.tileLayer.wms(model.getUrl(), model.toOptions()); 
    } 
    function _requestWFS(model) {} 
    return { 
    requestWMS:_requestWMS, 
    requestWFS:_requestWFS 
    } 
}()); 
//Model for webservices 
let Model = (function() { 
let url, layers, format, transparent, version; 
function _Model(pUrl, pLayer) { 
    url  = pUrl; 
    layers  = pLayer; 
    format  = 'image/png'; 
    transparent = true; 
    version = '1.1.1'; 
} 
function _toOptions() { 
    let options = { 
     layers:   layers, 
     format:   format, 
     transparent: transparent 
     version:  version, 
     }; 
    return options; 
} 
function _getUrl() { 
    return url; 
} 
return { 
     init:_Model, 
     getUrl:_getUrl, 
     toOptions: _toOptions 
}; 
}()); 
関連する問題