예제 #1
0
        public static bool IdentifyMap(IBasicMap ibasicMap_0, IPoint ipoint_0, double double_0, ILayer ilayer_1,
                                       IdentifyTypeEnum identifyTypeEnum_1, IList <string> ilist_0, out IList <object> ilist_1)
        {
            bool flag;

            ilist_1 = new List <object>();
            IEnvelope envelope = ipoint_0.Envelope;

            envelope.Width  = double_0;
            envelope.Height = double_0;
            envelope.CenterAt(ipoint_0);
            if ((ilayer_1 == null ? true : identifyTypeEnum_1 != IdentifyTypeEnum.enumITCurrentLayer))
            {
                UID uIDClass = new UID()
                {
                    Value = "{6CA416B1-E160-11D2-9F4E-00C04F6BC78E}"
                };
                IEnumLayer     layers             = ibasicMap_0.Layers[uIDClass, true];
                ISpatialFilter spatialFilterClass = new SpatialFilter()
                {
                    Geometry   = envelope,
                    SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects
                };
                layers.Reset();
                ILayer layer = layers.Next();
                bool   flag1 = false;
                while (layer != null)
                {
                    if (ilist_0.IndexOf(layer.Name) != -1)
                    {
                        if (identifyTypeEnum_1 == IdentifyTypeEnum.enumITSelectableLayer)
                        {
                            if (!(layer is IFeatureLayer))
                            {
                                layer = layers.Next();
                                continue;
                            }
                            else if (!(layer as IFeatureLayer).Selectable)
                            {
                                layer = layers.Next();
                                continue;
                            }
                        }
                        else if (identifyTypeEnum_1 == IdentifyTypeEnum.enumITTopLayer)
                        {
                            flag1 = true;
                        }
                        else if (identifyTypeEnum_1 == IdentifyTypeEnum.enumITVisibleLayer)
                        {
                            if (!layer.Visible)
                            {
                                layer = layers.Next();
                                continue;
                            }
                        }
                        try
                        {
                            IdentifyHelper.IdentifyLayer(ibasicMap_0, layer, envelope, ilist_1);
                        }
                        catch (Exception exception)
                        {
                            Logger.Current.Error("", exception, "");
                        }
                        if (flag1)
                        {
                            break;
                        }
                        layer = layers.Next();
                    }
                    else
                    {
                        layers.Next();
                    }
                }
                flag = true;
            }
            else
            {
                flag = IdentifyHelper.IdentifyLayer(ibasicMap_0, ilayer_1, envelope, ilist_1);
            }
            return(flag);
        }
예제 #2
0
        public static bool EditIdentifyMap(IBasicMap ibasicMap_0, IPoint ipoint_0, double double_0, ILayer ilayer_1,
                                           IdentifyTypeEnum identifyTypeEnum_1, out IArray iarray_0)
        {
            bool flag;

            iarray_0 = new ESRI.ArcGIS.esriSystem.Array();
            IEnvelope envelope = ipoint_0.Envelope;

            envelope.Width  = double_0;
            envelope.Height = double_0;
            envelope.CenterAt(ipoint_0);
            if ((ilayer_1 == null ? true : identifyTypeEnum_1 != IdentifyTypeEnum.enumITCurrentLayer))
            {
                UID uIDClass = new UID()
                {
                    Value = "{6CA416B1-E160-11D2-9F4E-00C04F6BC78E}"
                };
                IEnumLayer     layers             = ibasicMap_0.Layers[uIDClass, true];
                ISpatialFilter spatialFilterClass = new SpatialFilter()
                {
                    Geometry   = envelope,
                    SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects
                };
                layers.Reset();
                ILayer layer = layers.Next();
                bool   flag1 = false;
                while (layer != null)
                {
                    if (layer is IFeatureLayer)
                    {
                        IFeatureLayer featureLayer = layer as IFeatureLayer;
                        if (!(featureLayer.FeatureClass == null ? false : featureLayer.Visible))
                        {
                            layer = layers.Next();
                        }
                        else if (((featureLayer.FeatureClass as IDataset).Workspace as IWorkspaceEdit).IsBeingEdited())
                        {
                            if (identifyTypeEnum_1 == IdentifyTypeEnum.enumITSelectableLayer)
                            {
                                if (!(layer as IFeatureLayer).Selectable)
                                {
                                    layer = layers.Next();
                                    continue;
                                }
                            }
                            else if (identifyTypeEnum_1 == IdentifyTypeEnum.enumITTopLayer)
                            {
                                flag1 = true;
                            }
                            try
                            {
                                IdentifyHelper.IdentifyLayer(ibasicMap_0, layer, envelope, iarray_0);
                            }
                            catch (Exception exception)
                            {
                                Logger.Current.Error("", exception, "");
                            }
                            if (flag1)
                            {
                                break;
                            }
                            layer = layers.Next();
                        }
                        else
                        {
                            layer = layers.Next();
                        }
                    }
                    else
                    {
                        layer = layers.Next();
                    }
                }
                flag = true;
            }
            else
            {
                flag = IdentifyHelper.IdentifyLayer(ibasicMap_0, ilayer_1, envelope, iarray_0);
            }
            return(flag);
        }