2013-09-30 169 views
0

如果它不是另一個問題。我一整天都在看這個,不知道這裏出了什麼問題。我再次有一個兩層的地圖,一個縣級圖層和一個msa圖層。我在網頁上有兩個鏈接,一個是說msa的其他縣。點擊任一鏈接時,我想關閉一層地圖並顯示在正確的圖層上。這裏是點擊事件:打開和關閉地圖圖層

$('.map-type-link').live('click', function() { 
    params.display_region_type = parseInt($(this).attr('region_type')); 

    if (params.display_region_type == 1) { 

     app.currentFl = app.featureLayers[0]; 

    } 
    else { 

     app.currentFl = app.MSAfl;    
     app.flVis.setVisibility(false); 
     app.MSAfl.setVisibility(true); 
     app.currentFl.redraw();       

    }     

});

不僅僅是點擊縣app.flvis仍然可見。

在這些地方要素圖層創建:(我在做什麼你所有的變量是指假設)

dojo.forEach(app.layersUrls, function (info, idx) { 
    app.featureLayers[idx] = new esri.layers.FeatureLayer(
     app.layersUrls[idx], { 
      mode: esri.layers.FeatureLayer.MODE_ONDEMAND, 
      outFields: app.outFields[idx], 
      opacity: 0.80 
      } 
     );  

    app.featureLayers[idx].setRenderer(br); 

    //create min and max scales when layers load 
    dojo.connect(app.featureLayers[idx], 'onLoad', function() { 
     app.featureLayers[idx].minScale = app.layerScales[idx].min; 
     app.featureLayers[idx].maxScale = app.layerScales[idx].max; 
    });//ends connections 

    //add THIS feature layer to the map 
    app.map.addLayer(app.featureLayers[idx]); 

回答

0

要打開MSA層上,你有四行代碼(else語句):

app.currentFl = app.MSAfl;    
app.flVis.setVisibility(false); 
app.MSAfl.setVisibility(true); 
app.currentFl.redraw(); 

在if語句,你只需要一行代碼,那會不會將任何層或關閉線:

app.currentFl = app.featureLayers[0]; 

相反,我認爲你需要按照你在else語句所做的例子:

app.currentFl = app.flVis;    
app.MSAfl.setVisibility(false); 
app.flVis.setVisibility(true); 
app.currentFl.redraw(); 

這假定app.flVis是貴縣層,這可能會或可能不會是案件。

+0

是一個更大的問題,爲什麼這只是隱藏了預期的圖層 –