В своем приложении для рендеринга карты я использую SharpMap, в качестве провайдера данных использую postgis/postgresql. Для выбора полигонов я использую следующий код в обработчике события клика по контролу:
Код: Выделить всё
private void renderGisControl_MouseClick(object sender, MouseEventArgs m)
{
SharpMap.Geometries.Point p = renderGisControl.Map.ImageToWorld(m.Location);
FeatureDataSet selectedBuild = new FeatureDataSet();
SharpMap.Layers.VectorLayer buildingsLayer = cityMap.FindLayer("polygons").FirstOrDefault() as
SharpMap.Layers.VectorLayer;
if (!buildingsLayer.DataSource.IsOpen)
buildingsLayer.DataSource.Open();
buildingsLayer.DataSource.ExecuteIntersectionQuery(p.GetBoundingBox(), selectedBuild);
buildingsLayer.DataSource.Close();
foreach (SharpMap.Data.FeatureDataRow current in selectedBuild.Tables[0].Rows)
if (!selectedBuildings.Contains(current.Geometry))
selectedBuildings.Add(current.Geometry);
else
selectedBuildings.Remove(current.Geometry);
renderGisControl.Refresh();
}
Не могли бы подсказать, в чем я заблуждаюсь? Как организовать выбор "линий"? Заранее спасибо за любую помощь, и извините, если что-то не так сформулировал, так как я еще новичок в этой области.