Выделить, подсветить, позиционировать

0 голосов
спросил 14 Апр, 10 от aadn (160 баллов) в категории Программные продукты Esri
Добрый день.
Требуется при открытии автоматически подсветить и позиционировать карту по требуемому объекту, нашёл пример:

protected void ZoomToFeature(string key, string layer)
{
ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality mf;
ESRI.ArcGIS.ADF.IMS.Carto.MapView mv;
mf = (ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality)Map1.GetFunctionality(0);
mv = mf.MapView;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureLayer queryLayer;
queryLayer = (FeatureLayer)mv.Layers.FindByName(layer);
Filter queryFilter = new Filter();
QueryParameters queryParams = new QueryParameters(queryFilter);
queryFilter.WhereExpression = "ObjectID = '" + key + "'";
queryFilter.Tolerance = 20;
queryFilter.ToleranceUnits = BufferUnits.Meters;
queryParams.ReturnGeometries = true;
queryParams.ReturnGlobalEnvelope = true;
ESRI.ArcGIS.ADF.IMS.Display.Symbol.FeatureSymbol fs = new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol(System.Drawing.Color.White, System.Drawing.Color.Red, ESRI.ArcGIS.ADF.IMS.Display.Symbol.PolygonFillType.Solid);
ESRI.ArcGIS.ADF.IMS.Display.Renderer.SimpleRenderer sr = new ESRI.ArcGIS.ADF.IMS.Display.Renderer.SimpleRenderer(fs);
queryLayer.Visible = true;
FeatureTable ft = queryLayer.Query(queryParams);
if (ft.Rows.Count > 0)
{
 ESRI.ArcGIS.ADF.IMS.Geometry.Geometry featureGeom = (ESRI.ArcGIS.ADF.IMS.Geometry.Geometry)ft.Rows[0]["#SHAPE#"];
 ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfGEom = ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(featureGeom);
 ESRI.ArcGIS.ADF.Web.Geometry.Envelope adfEnv = ESRI.ArcGIS.ADF.Web.Geometry.Envelope.GetMinimumEnclosingEnvelope(adfGEom);
 Map1.Extent = adfEnv;
}
Map1.Refresh();
}

Копирую функцию в Default.aspx.cs, получаю следующее:

CS0234: The type or namespace name 'IMS' does not exist in the namespace 'ESRI.ArcGIS.ADF' (are you missing an assembly reference?)
Line 87: ESRI.ArcGIS.ADF.IMS.Carto.MapView mv;


Версия сервера 9.3. Как адаптировать этот пример, или дело не в версии?
Спасибо за внимание.

1 Ответ

0 голосов
ответил 16 Апр, 10 от aadn (160 баллов)
Ещё пример:


foreach (ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality gisFunctionality in Map1.GetFunctionalities())
{
    ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisResource = gisFunctionality.Resource;
    bool supported = gisResource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));

    if (supported)
    {
        ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality queryFunctionality = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisResource.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);

        string[] layerIDs = null;
        string[] layerNames = null;
        queryFunctionality.GetQueryableLayers(null, out layerIDs, out layerNames);

        ESRI.ArcGIS.ADF.Web.SpatialFilter spatialFilter = new ESRI.ArcGIS.ADF.Web.SpatialFilter();
        spatialFilter.ReturnADFGeometries = true;
        spatialFilter.MaxRecords = 1000;

        spatialFilter.WhereClause = "STATE_NAME LIKE 'N%'";

        ESRI.ArcGIS.ADF.Web.Geometry.Envelope adfEnvelope = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(-120, 30, -100, 50);
        spatialFilter.Geometry = adfEnvelope;

        string activeLayerString = "states";
        System.Data.DataTable queryResultsDataTable = null;
        for (int i = 0; i < layerNames.Length; i++)
        {
            if (layerNames.Equals(activeLayerString))
            {
                queryResultsDataTable = queryFunctionality.Query(gisFunctionality.Name, layerIDs, spatialFilter);
                break;
            }
        }
    }
}


Взят отсюда http://edndoc.esri.com/arcobjects/9.2/NET_Server_Doc/developer/samples/Web_Applications/d09ea604-0bf3-467f-8003-84e5e029743f.htm

Я так понимаю он должен выбрать все объекты из указанного слоя и поместить их в результат?
Запустил, ничего не появляется, хотя скрипт прогоняется, ошибок тоже не показывает, что не так?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...