protected virtual void WriteBaseElementContents(Layer layer) { // Write extended layer properties bool isBaseMapLayer = (bool)layer.GetValue(ESRI.ArcGIS.Client.WebMap.Document.IsBaseMapProperty); if (isBaseMapLayer) { writer.WriteElementString(Constants.esriExtensibilityPrefix, "Document.IsBaseMap", Constants.esriExtensibilityNamespace, "true"); } if (LayerExtensions.GetIsReferenceLayer(layer)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.IsReferenceLayer", Constants.esriMappingNamespace, "true"); } if (LayerExtensions.GetUsesProxy(layer)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.UsesProxy", Constants.esriMappingNamespace, "true"); } string displayName = layer.GetValue(ESRI.ArcGIS.Client.Extensibility.MapApplication.LayerNameProperty) as string; if (!string.IsNullOrEmpty(displayName)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.LayerName", Constants.esriMappingNamespace, displayName); } string displayUrl = (string)layer.GetValue(LayerExtensions.DisplayUrlProperty); if (!string.IsNullOrEmpty(displayUrl)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.DisplayUrl", Constants.esriMappingNamespace, displayUrl); } // Auto-Update is only available for certain layer types if (layer is FeatureLayer || layer is ArcGISDynamicMapServiceLayer || layer is CustomGraphicsLayer) { double autoUpdateInterval = LayerExtensions.GetAutoUpdateInterval(layer); // We only store the Interval value if it is > 0. The Interval indicates // if auto update is being used. A value of <=0 means we are not using // auto update. if (autoUpdateInterval > 0.0d) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.AutoUpdateInterval", Constants.esriMappingNamespace, autoUpdateInterval.ToString()); } if (LayerExtensions.GetAutoUpdateOnExtentChanged(layer)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.AutoUpdateOnExtentChanged", Constants.esriMappingNamespace, "True"); } } Collection <int> identifyLayerIds = LayerExtensions.GetIdentifyLayerIds(layer); if (identifyLayerIds != null && identifyLayerIds.Count > 0) { writer.WriteStartElement(Constants.esriMappingPrefix, "LayerExtensions.IdentifyLayerIds", Constants.esriMappingNamespace); foreach (int id in identifyLayerIds) { writer.WriteStartElement(Constants.sysPrefix, "Int32", Constants.sysNamespace); writer.WriteValue(id); writer.WriteEndElement(); } writer.WriteEndElement(); } Collection <LayerInformation> layerInfos = LayerExtensions.GetLayerInfos(layer); if (layerInfos != null) { writer.WriteStartElement(Constants.esriMappingPrefix, "LayerExtensions.LayerInfos", Constants.esriMappingNamespace); LayerInformation.WriteLayerInfos(layerInfos, writer); writer.WriteEndElement(); } bool usePopupFromWebMap = LayerExtensions.GetUsePopupFromWebMap(layer); if (usePopupFromWebMap) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.UsePopupFromWebMap", Constants.esriMappingNamespace, "true"); } string popupDataTemplates = LayerExtensions.GetSerializedPopupDataTemplates(layer); if (!string.IsNullOrEmpty(popupDataTemplates)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.SerializedPopupDataTemplates", Constants.esriMappingNamespace, popupDataTemplates); } string popupTitles = LayerExtensions.GetSerializedPopupTitleExpressions(layer); if (!string.IsNullOrEmpty(popupTitles)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.SerializedPopupTitleExpressions", Constants.esriMappingNamespace, popupTitles); } popupDataTemplates = LayerExtensions.GetSerializedWebMapPopupDataTemplates(layer); if (!string.IsNullOrEmpty(popupDataTemplates)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.SerializedWebMapPopupDataTemplates", Constants.esriMappingNamespace, popupDataTemplates); } popupTitles = LayerExtensions.GetSerializedWebMapPopupTitleExpressions(layer); if (!string.IsNullOrEmpty(popupTitles)) { writer.WriteElementString(Constants.esriMappingPrefix, "LayerExtensions.SerializedWebMapPopupTitleExpressions", Constants.esriMappingNamespace, popupTitles); } bool isPopupEnabled = ESRI.ArcGIS.Client.Extensibility.LayerProperties.GetIsPopupEnabled(layer); if (isPopupEnabled) { writer.WriteElementString(Constants.esriExtensibilityPrefix, "LayerProperties.IsPopupEnabled", Constants.esriExtensibilityNamespace, "true"); } else { writer.WriteElementString(Constants.esriExtensibilityPrefix, "LayerProperties.IsPopupEnabled", Constants.esriExtensibilityNamespace, "false"); } if (ESRI.ArcGIS.Client.Extensibility.LayerProperties.GetIsVisibleInMapContents(layer)) { writer.WriteElementString(Constants.esriExtensibilityPrefix, "LayerProperties.IsVisibleInMapContents", Constants.esriExtensibilityNamespace, "true"); } else { writer.WriteElementString(Constants.esriExtensibilityPrefix, "LayerProperties.IsVisibleInMapContents", Constants.esriExtensibilityNamespace, "false"); } }