今天使用AO求地图比例尺,一直求不出来,最终发现原因是地图没有设定单位,即mapUnit属性。
pMap = pHookHelper.FocusMap;
pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
pFeatureLayer = new FeatureLayerClass();
pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(Path.GetDirectoryName(openFileDialog.FileName), 0);
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(Path.GetFileName(openFileDialog.FileName));
//这句话必须加上,否则该Layer名字将为“”,TOCContronl内的名称也不显示!
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
pMap.AddLayer(pFeatureLayer);
pMap.MapUnits = ESRI.ArcGIS.esriSystem.esriUnits.esriMeters;//必须设定单位,否则比例尺无法计算
((IActiveView)pMap).Refresh();