Использование одного и того же InfoWindow для двух AttributeInspectors
У меня есть два редактируемых векторных слоя в моем приложении, и я пытаюсь присоединить соответствующий инспектор атрибутов в зависимости от того, какой векторный слой пытается редактировать мой пользователь.
Я создаю инспекторы атрибутов для обоих векторных слоев при загрузке приложения, а затем присоединяю соответствующий инспектор атрибутов к информационному окну карты, когда пользователь пытается редактировать векторный слой.
Все работает хорошо, пока пользователь не попытается редактировать другой векторный слой. Когда я пытаюсь прикрепить другой инспектор атрибутов к информационному окну, оно просто появляется пустым.
Вот примерно то, что я делаю:
// AttributeEditor1 for FeatureLayer1 in Class1
constructor: function(options) {
this.options = lang.mixin(this.options, options);
this.map = options.map;
this.configureAttributeEditor1();
},
configureAttributeEditor1: function() {
this.attributeEditor1 = new AttributeInspector({
layerInfos: layerInfos
}, domConstruct.create("div"));
// here I add a Save and Delete button and various event handlers
this.attributeEditor1.startup();
},
// I call this when I know that the user wants to edit FeatureLayer 1
attachEditor1: function() {
this.map.infoWindow.setContent(this.attributeEditor1.domNode);
this.map.infoWindow.resize(350, 240);
},
// AttributeEditor2 for FeatureLayer2 in Class2
constructor: function(options) {
this.options = lang.mixin(this.options, options);
this.map = options.map;
this.configureAttributeEditor2();
},
configureAttributeEditor2: function() {
this.attributeEditor2 = new AttributeInspector({
layerInfos: layerInfos
}, domConstruct.create("div"));
// here I add a Save and Delete button and various event handlers
this.attributeEditor2.startup();
},
// I call this when I know that the user wants to edit FeatureLayer 2
attachEditor2: function() {
this.map.infoWindow.setContent(this.attributeEditor2.domNode);
this.map.infoWindow.resize(350, 240);
},
Заранее спасибо.
1 ответ
При обновлении содержимого infoWindow с помощью map.infoWindow.setContent
, он уничтожает предыдущий контент, а затем обновляет новый контент. Поэтому в основном ваш AttributeInspector1 будет уничтожен, когда вы обновите информационное окно с помощью AttributeInspector2.
Вам не нужно создавать несколько AttributeInspector
, работая над несколькими FeatureLayer. layerInfos
Свойство является типом массива, вы можете установить обновление нескольких слоев.
Но, я думаю, у вас есть разные потребности / действия, которые нужно предпринимать при переключении между слоями. Лучшее, что вы можете сделать, это либо создавать новый AttributeInspector при каждом переключении, либо просто обновлять layerInfos
и сохранять и удалять события. Убедитесь, что вы удалили предыдущее сохранение и удалите дескрипторы событий.