Jeremy,
Welcome to the community, hope you have a good time learning and sharing here.
Here is the complete code for your scenario(click the button and highlight India), I added some comments for the key part.
using System;
using ThinkGeo.MapSuite.Core;
using ThinkGeo.MapSuite.WebEdition;
namespace CSSamples.Samples
{
public partial class DisplayASimpleMap : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#B3C6D4"));
Map1.CurrentExtent = new RectangleShape(-140, 60, 140, -60);
Map1.MapUnit = GeographyUnit.DecimalDegree;
var worldLayer = new ShapeFileFeatureLayer(MapPath("~/SampleData/world/cntry02.shp"));
worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;
worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
LayerOverlay shapeOverlay = new LayerOverlay("Shape Overlay", true, TileType.MultipleTile);
shapeOverlay.Layers.Add("worldLayer", worldLayer);
shapeOverlay.TransitionEffect = TransitionEffect.Stretching;
Map1.CustomOverlays.Add(shapeOverlay);
// Add the hightlight overlay to hole the highlight features
InMemoryFeatureLayer highlightFeatureLayer = new InMemoryFeatureLayer();
highlightFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Red);
highlightFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
LayerOverlay highlightOverlay = new LayerOverlay("HighLight Overlay", false, TileType.MultipleTile);
highlightOverlay.Layers.Add("highLightFeatureLayer", highlightFeatureLayer);
Map1.CustomOverlays.Add(highlightOverlay);
SimpleMarkerOverlay markerOverlay = new SimpleMarkerOverlay("Markers");
markerOverlay.Markers.Add(new Marker(-94.558, 39.078));
markerOverlay.Markers.Add(new Marker(-111.893919, 40.721292));
markerOverlay.Markers.Add(new Marker(74.99861, 32.55694));
Map1.CustomOverlays.Add(markerOverlay);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
PointShape indiaPoint = new PointShape(74.99861, 32.55694);
ShapeFileFeatureLayer worldLayer = (ShapeFileFeatureLayer)((LayerOverlay)Map1.CustomOverlays["Shape Overlay"]).Layers["worldLayer"];
worldLayer.Open();
System.Collections.ObjectModel.Collection<Feature> features = worldLayer.QueryTools.GetFeaturesContaining(indiaPoint, ReturningColumnsType.NoColumns);
worldLayer.Close();
LayerOverlay layerOverlay = (LayerOverlay)Map1.CustomOverlays["HighLight Overlay"];
foreach (Feature feature in features)
{
((InMemoryFeatureLayer)(layerOverlay.Layers["highLightFeatureLayer"])).InternalFeatures.Add(feature);
}
// here you only need to redraw the highlight overlay, do not need to refresh the background map or the marker overlay
layerOverlay.Redraw();
}
}
}
Also here is the result snapshot.
Thanks,
Ben