Point location via its ID...

Topics: Data Access, General Topics, SharpMap Project, SharpMap v0.9 / v1.x, SharpMap v2.0, Web Controls
Dec 9, 2010 at 12:53 AM

Hi, I have a map layer (points shapefile), every feature of the shapefile have its ID, NAME, DESCRIPTION fields... I need to type in a textbox the name of the feature in order to search the point in the map and zoom/center to the point...

In a web app, how can I do that?

If somebody have some sample code, it will be great..

 

Thanks...

Editor
Dec 9, 2010 at 11:55 AM

Hi, I have this sample code working for me, put the code in MapHelper.cs

Hope this help you.

 public static void Search(SharpMap.Map map, String value, String field, string layer_name)
    {
        Boolean found;
        found = false;
        uint idx;
        idx = 0;
        SharpMap.Layers.VectorLayer layer;
        layer = (SharpMap.Layers.VectorLayer)map.Layers[layer_name];
        layer.DataSource.Open();
        idx = ZoomTo(layer, value, field, ref found);
        if (found == false)
        {
            map.ZoomToExtents();
        }
        else
        {
            map.ZoomToBox(layer.DataSource.GetFeature(idx).Geometry.GetBoundingBox());
        }
        layer.DataSource.Close();
    }
    private static uint ZoomTo(SharpMap.Layers.VectorLayer layer, string value, string field, ref Boolean found)
    {
        Collection<uint> indexes = layer.DataSource.GetObjectIDsInView(layer.DataSource.GetExtents());

        uint return_value;
        return_value = 0;
        found = false;
        foreach (uint idx in indexes)
        {
            SharpMap.Data.FeatureDataRow feature = layer.DataSource.GetFeature(idx);
            if (feature[field].ToString().Equals(value))
            {
                return_value = idx;
                found = true;
                break;
            }
        }
        return return_value;
    }