2013-06-11 3 views
2

я использую ArcGIS JavaScript API 3,5 и мой кодArcGis JavaScript API 3.5, как установить видимость художественного слоя

map = new esri.Map("mapDiv", { 
      basemap: "streets", 
      center: [-112.07102547942392, 46.75909704205151], 
      zoom: 12, 
      slider: false, 
      infoWindow: infoWindow 
     }); 




     var featureLayer = new esri.layers.FeatureLayer("http:/abc/arcgis/rest/services/MTARNG/MapServer/1", { 
      mode: esri.layers.FeatureLayer.MODE_SNAPSHOT, 
      infoTemplate: templateFuze, 
      outFields: ["*"] 
     }); 
     var featureLayer1 = new esri.layers.FeatureLayer("http://abc/arcgis/rest/services/MTARNG/MapServer/0", { 
      mode: esri.layers.FeatureLayer.MODE_SNAPSHOT, 
      infoTemplate: templateParcel, 
      outFields: ["*"] 
     }); 
     var featureLayer2 = new esri.layers.FeatureLayer("http://abc/arcgis/rest/services/MTARNG/MapServer/2", { 
      mode: esri.layers.FeatureLayer.MODE_SNAPSHOT, 
      infoTemplate: templateGrid, 
      outFields: ["*"] 
     }); 

      Ext.create('Ext.form.Panel', { 
       width: 400, 
       height: 600, 
       bodyPadding: 10, 
       renderTo: Ext.get('LayerDiv'), 
       items: [{ 
        xtype: 'checkboxgroup', 
        columns: 1, 
        vertical: true, 
        items: layerInfo, 
        listeners: { 

         change: { 
          fn: function (checkbox, checked) { 
           for (var i = 0; i < checkbox.items.items.length; i++) { 
            if (checkbox.items.items[i].checked) { 
             //visible true checkbox.items.items[0].boxLabel           

            } 
            else { 
             //visible false 
            } 
           } 
          } 
         } 
        } 
       }] 
      }); 

     }); 

Так я пытаюсь установить visibilty слоя, но я не в состоянии делать. после этого как обновить карту?

У меня есть функция, но она работает, например, - visibleAtMapScale = false, defaultVisibility = false и для обновления я получил только map.resize = true;

Что еще я могу попытаться реализовать эту функцию.

ответ

0

Если вы хотите включить IntelliSense поддержки в Visual Studio вы можете загрузить и код помочь плагин с сайта Esri. Существует страница справки об этом here со ссылками на различные поддерживаемые версии и способы их использования от VS.

Если вы просто хотите, чтобы получить версию VS2012 для v3.5 от API JS это here и ссылаться на него:

При работе в HTML-файл, добавить тег сценария, чтобы добавить ссылку на код содействия

<script type='text/javascript' src='path_to_vsdoc.js'></script> 

при работе в файле JavaScript добавить ссылку директиву в файл VSDoc:

/// <reference path="~/Scripts/esri-jsapi-vsdoc.js" /> 
5

Вы можете изменить видимость слоя с помощью функций hide() и show() - FeatureLayer наследует их от GraphicsLayuer (который наследует их от Layer). Таким образом, в вашем примере, учитывая featureLayer является глобальной переменной она должна находиться в области видимости, когда срабатывает событие, так что вы просто могли бы сделать:

featureLayer.hide();

и

featureLayer.show();

Вам не нужно для обновления карты это произойдет автоматически.

Simon

+0

Спасибо, Саймон, он работает. но почему эти функции не видны в Quick Watch (я использую Visual studio 2012) и откуда вы знаете эту функцию (любая ссылка)? –

+0

Извините, я должен был сказать. Посмотрите здесь: http://developers.arcgis.com/ru/javascript/ есть много полезных образцов для начала работы, но также посмотрите ссылку API (связанная сверху), которая описывает свойства, методы и события каждого объекта. Я не уверен, почему Quick Watch не сообщила об этом, возможно, Quick Watch недостаточно умна, чтобы определить методы/свойства, которые унаследованы от базового класса. – Kate

1

при создании нового FeatureLayer, вы можете указать видимость по умолчанию с помощью optional parameters. Значение по умолчанию - true.

var featureLayer = new esri.layers.FeatureLayer("http:/.../MapServer/1",  
     {visible:false} 
}); 

Чтобы установить видимость существующего слоя, вы можете использовать метод setVisibility().

featureLayer.setVisibility(false); 
Смежные вопросы