查询定位

 查询定位主要分两种情况,一个是查询的结果是点、一个是多边形,因此在程序中需要针对不同的结果进行定位显示
public void LocationBySql(String LayerName, String FieldName, String SearchStr, PictureBox m_PictureBox)
        {
            fuzhou.RecordSet m_recordset = new FzSecurityGisServer.fuzhou.RecordSet();
            m_recordset = QueryFeatureData(LayerName, FieldName, SearchStr);
            for (int i = 0; i < m_recordset.Records.GetLength(0); i++)
            {
                fuzhou.Geometry m_geometry=new FzSecurityGisServer.fuzhou.Geometry() ;
                fuzhou.GeometryDef m_GeometryDef = new fuzhou.GeometryDef();
                fuzhou.Field m_Field = new FzSecurityGisServer.fuzhou.Field();
                for (int j = 0; j < m_recordset.Fields.FieldArray.GetLength(0); j++)
                {
                    m_Field = m_recordset.Fields.FieldArray[j];
                    if (m_Field.Type == fuzhou.esriFieldType.esriFieldTypeGeometry)
                    {
                        m_GeometryDef = m_Field.GeometryDef;
                        if (m_GeometryDef.GeometryType == fuzhou.esriGeometryType.esriGeometryPolygon)
                        {
                            fuzhou.PolygonN pgnn = m_recordset.Records[i].Values[j] as fuzhou.PolygonN;
                            fuzhou.EnvelopeN pEnvelope = pgnn.Extent as fuzhou.EnvelopeN;
                            fuzhou.MapDescription pMapDescription = m_sMapDesc;
                            double eWidth = Math.Abs(pEnvelope.XMax - pEnvelope.XMin);
                            double eHeight = Math.Abs(pEnvelope.YMax - pEnvelope.YMin);
                            double xFactor = (eWidth - (eWidth * 1.5)) / 2;
                            double yFactor = (eHeight - (eHeight * 1.5)) / 2;
                            pEnvelope.XMax = pEnvelope.XMax - xFactor;
                            pEnvelope.XMin = pEnvelope.XMin + xFactor;
                            pEnvelope.YMax = pEnvelope.YMax - yFactor;
                            pEnvelope.YMin = pEnvelope.YMin + yFactor;
                            fuzhou.MapExtent pMapExtext = new fuzhou.MapExtent();
                            pMapExtext.Extent = pEnvelope;
                            pMapDescription.MapArea = pMapExtext;
                            m_sMapDesc = pMapDescription;
                            drawMap(ref pMapDescription, m_PictureBox);
 
                        }
                        if (m_GeometryDef.GeometryType == fuzhou.esriGeometryType.esriGeometryPoint)
                        {
                            fuzhou.PointN m_point = m_recordset.Records[i].Values[j] as fuzhou.PointN;
                            fuzhou.EnvelopeN pEnvelope = new fuzhou.EnvelopeN() ;
                            pEnvelope.XMax = m_point.X;
                            pEnvelope.XMin = m_point.X;
                            pEnvelope.YMax = m_point.Y;
                            pEnvelope.YMin = m_point.Y;
                            fuzhou.MapDescription pMapDescription = m_sMapDesc;
                            double eWidth = 1000;
                            double eHeight = 1000;
                            double xFactor = (eWidth - (eWidth * 1.5)) / 2;
                            double yFactor = (eHeight - (eHeight * 1.5)) / 2;
           &nbsp;                pEnvelope.XMax = pEnvelope.XMax - xFactor;
                            pEnvelope.XMin = pEnvelope.XMin + xFactor;
                            pEnvelope.YMax = pEnvelope.YMax - yFactor;
                            pEnvelope.YMin = pEnvelope.YMin + yFactor;
                            fuzhou.MapExtent pMapExtext = new fuzhou.MapExtent();
                            pMapExtext.Extent = pEnvelope;
                            pMapDescription.MapArea = pMapExtext;
                            // save the map description and draw the map
                            m_sMapDesc = pMapDescription;
                            drawMap(ref pMapDescription, m_PictureBox);
                        }
                    }
                   
                }
            }
        }
本文来源【学网】网站链接是http://www.xue5.com


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值