public SearchSavedMessage(SaveSearchResults results, ServiceModel serviceModel) { Results = results; ServiceModel = serviceModel; }
private async Task UpdateFeatureLayers(SaveSearchResults results, ServiceModel serviceModel) { Debug.Assert(MapView.Active != null); var mapView = MapView.Active; var progressDlg = new ProgressDialog("Updating map..."); try { progressDlg.Show(); await QueuedTask.Run(() => { var serviceUri = results.FeatureService; foreach (var resultLayer in results.FeatureLayers) { // check if the feature layer already exists (e.g. save search -> replace) var featureLayer = FindLayerByDataset <FeatureLayer>(mapView.Map, serviceUri.AbsoluteUri, resultLayer.Id.ToString()); if (featureLayer == null) { // add the entire feature service as a group layer using (var geoDb = new Geodatabase(new ServiceConnectionProperties(serviceUri))) { GroupLayer groupLayer = null; // add the new group layer groupLayer = (GroupLayer)LayerFactory.Instance.CreateLayer(serviceUri, mapView.Map); groupLayer.SetName(serviceModel.Name); foreach (var childLayer in groupLayer.GetLayersAsFlattenedList()) { var match = MatchLayer(childLayer, serviceUri.AbsoluteUri, resultLayer.Id.ToString()); if (match && childLayer.Name != resultLayer.Name) { childLayer.SetName(resultLayer.Name); } childLayer.SetVisibility(match); } } } else { // force a refresh featureLayer.ClearDisplayCache(); featureLayer.SetDefinitionQuery(featureLayer.DefinitionQuery); // ensure the feature layer is visible if (!featureLayer.IsVisible) { featureLayer.SetVisibility(true); } // update layer name if (featureLayer.Name != resultLayer.Name) { featureLayer.SetName(resultLayer.Name); } } } }); } catch (Exception e) { e.HandleAsUserNotification(); } finally { progressDlg.Hide(); } }