I have been using the QueryTools property of my shape files layers without a problem for the last week. Then suddenly, it is always null.
This is how I add my point layers:
private Layer CreatePointLayer(string layerName, string fileName, PointStyle pointStyle, string displayColumnName, GeoColor displayColumnColour, GeoFont displayColumnFont)
{
Logger.Log("Loading Point Layer: " + fileName, Adapt.Utilities.Common.Logger.MessageType.Information, this.GetType().FullName);
ShapeFileFeatureLayer.BuildIndexFile(MapPath(fileName), BuildIndexMode.DoNotRebuild);
var myLayer = new ShapeFileFeatureLayer(MapPath(fileName));
myLayer.RequireIndex = true;
myLayer.Name = layerName;
myLayer.ZoomLevelSet.ZoomLevel19.DefaultPointStyle = pointStyle;
myLayer.ZoomLevelSet.ZoomLevel19.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
myLayer.ZoomLevelSet.ZoomLevel19.DefaultTextStyle = new TextStyle(displayColumnName, displayColumnFont, new GeoSolidBrush(displayColumnColour));
myLayer.DrawingMarginPercentage = 50;
return myLayer;
}
This is in the Map1_Click event where I need QueryTools but it's null. The code inside the first if statement is never hit because QueryTools is always null.
foreach (ShapeFileFeatureLayer layer in Map1.StaticOverlay.Layers)
{
layer.FeatureSource.Open();
if (layer.QueryTools != null)
{
//Get columns in layer
var columns = layer.QueryTools.GetColumns();
//Add column names to a list
var columnNames = new List<string></string>();
foreach (var column in columns)
{
columnNames.Add(column.ColumnName);
}
//Query the layer for features within one meter of point clicked
var features = layer.QueryTools.GetFeaturesWithinDistanceOf(e.Position, GeographyUnit.Meter, DistanceUnit.Meter, 2, columnNames);
layer.FeatureSource.Close();
//Add features to dictionary
layerDictionary.Add(layer.Name, features);
}
}