Hi,
I have an application where we are displaying several points on the map, but would like to have the map only include some specific points. Can you provide a code example on how to implement this?
      
    Hi,
I have an application where we are displaying several points on the map, but would like to have the map only include some specific points. Can you provide a code example on how to implement this?
Steve,
Thanks for you post!
To zoom the map to a set of points you would want to use the Map1.ExtentHelper.GetBoundingBoxofItems() method. You can pass in a collection of InternalFeatures (from a Layer) and the Map will zoom the map to include just those features. 
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ThinkGeo.MapSuite.Core;
namespace CSSamples.Samples.NavigateTheMap
{
    public partial class ZoomToSetOfFeatures : 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;
                //Declare Layer
                ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(MapPath("~/SampleData/world/cntry02.shp"));
                worldLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(255, 243, 239, 228), GeoColor.FromArgb(255, 218, 193, 163), 1);
                worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                //Declare Layer that contains Internal Features
                InMemoryFeatureLayer highlightLayer = new InMemoryFeatureLayer();
                highlightLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(100, 60, 180, 60), GeoColor.GeographicColors.DeepOcean);
                highlightLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Country1("CNTRY_NAME");
                highlightLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                highlightLayer.DrawingMarginPercentage = 50;
                //Add Layers to Map
                Map1.StaticOverlay.Layers.Add("WorldLayer", worldLayer);
                Map1.DynamicOverlay.Layers.Add("HighlightLayer", highlightLayer);
                
                //Clear HighlightLayer
                highlightLayer.InternalFeatures.Clear();
                //Create list of IDs for the features we want to zoomin to
                //This data could reside in your database or the dbf of your
                //shapefile as another column next to your Lat/Long columns
                List<string> featureIds = new List<string>();
                featureIds.Add("15");
                featureIds.Add("24");
                featureIds.Add("60");
                //Query the dbf of your shapefile or database for the features that match the featureIds above
                worldLayer.Open();
                Collection<Feature> features = worldLayer.QueryTools.GetFeaturesByIds(featureIds, new string[] { "CNTRY_NAME" });
                worldLayer.Close();
                foreach (Feature feature in features)
                {
                    //Add each feature that matched the featureIds above to a HighLightLayer
                    highlightLayer.InternalFeatures.Add(feature.Id, feature);
                }
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            InMemoryFeatureLayer highlightLayer = (InMemoryFeatureLayer)Map1.DynamicOverlay.Layers["HighlightLayer"];
            if (highlightLayer.InternalFeatures.Count > 0)
            {
                //Zoom the map to the bounding box of the features contained in the HightLightLayer
                highlightLayer.Open();
                Map1.CurrentExtent = highlightLayer.GetBoundingBox();
                //Use the next three lines of code if you want to scale the Current Extent
                //a bit larger
                //RectangleShape rect = highlightLayer.GetBoundingBox();
                //rect.ScaleUp(30);
                //Map1.CurrentExtent = rect;
                highlightLayer.Close();
            }
        }
    }
}
Note you can use the also use:
Map1.CurrentExtent = ExtentHelper.GetBoundingBoxOfItems(Layer.InternalFeatures);