Люди, хелп! Неужели никто не пытался прочесть хоть раз IFeature, средствами Delphi 7 у ArcGIS 9? Мне нужно узнать центр IFeature, для этого я пытаюсь взять ее Extent. В нижеприведенном коде все нормально до момента, как я пытаюсь прочитать Extent. Т.е. aFeature находится, я проверял, но ни одно свойство она не возвращает (т.е. nil). Какой есть выход?
Более глобально, мне нужно отцентрировать карту оносительно центра найденной фигуры.
Поделитесь мыслями, плизз!
var
aLayer: ILayer;
aFeatureLayer: IFeatureLayer;
aFeatureClass: IFeatureClass;
aFeatureCursor: IFeatureCursor;
aQueryFilter: IQueryFilter;
anExtent: IEnvelope;
aFeature: IFeature;
x1, x2, y1, y2: double;
aPoint: IPoint;
s: widestring;
aShape: IGeometry;
begin
MapControl1.Map.Get_Layer(0, aLayer);
aFeatureLayer:=aLayer as IFeatureLayer;
aQueryFilter:=CoQueryFilter.Create as IQueryFilter;
aQueryFilter.Set_WhereClause('ID = '+Edit1.Text);
if aFeatureLayer.Search(aQueryFilter, false, aFeatureCursor) = S_OK
then begin
aFeatureCursor.NextFeature(aFeature);
aFeature.Get_ShapeCopy(aShape);
aFeature.Get_Extent(anExtent);
anExtent.Get_XMin(x1);
anExtent.Get_XMax(x2);
anExtent.Get_YMin(y1);
anExtent.Get_YMax(y2);
aPoint:=CoPoint.Create as IPoint;
aPoint.PutCoords(x1+(x2-x1)/2, y1+(y2-y1)/2);
MapControl1.CenterAt(aPoint);
end else
ShowMessage('Not Found!');
end;