5 votos

Habilitar coches de búsqueda por localización en widget de búsqueda?

Estoy creando una herramienta que el usuario seleccionará características punto o línea del mapa y se mostrará sus nombres en una lista a continuación, después de hacer clic en cualquiera de estas características en la lista, se mostrará los polígonos intersectados en otra lista.

El problema que no sé cómo hacer un SpatialFilter para hacer esta funcionalidad de intersección, que será como la de la Select By Location herramienta.

7voto

Tim C Puntos 25946

Por favor, eche un vistazo IFeatureClass.Método De Búsqueda

Para obtener cuentan con un clic del ratón:

public List<IFeature> Search(IPoint mousePoint, double buffer, IFeatureClass featureClass)
{
    var envelope = mousePoint.Envelope;
    envelope.Expand(buffer, buffer, false);
    var geodataset = (IGeoDataset)featureClass;
    string shapeFieldName = featureClass.ShapeFieldName;
    Geodatabase.ISpatialFilter spatialFilter = new Geodatabase.SpatialFilter();
    spatialFilter.Geometry = envelope;
    spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;
    spatialFilter.set_OutputSpatialReference(shapeFieldName, geodataset.SpatialReference);

    Geodatabase.IFeatureCursor featureCursor = ArcFeatureClass.Search(spatialFilter, false);

    var features = new List<IFeature>();
    Geodatabase.IFeature feature;
    while ((feature = featureCursor.NextFeature()) != null)
        features.Add(new Feature(feature));
    return features;
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X