在Winform中, 我做了个卫星地位系统,现在要实现一个功能:我点击地图中的一辆汽车(有车牌号),就是根据这个车牌号去DB中查询这车的详细情况,并显示在地图中的车旁边,会的帮我!要代码!(C#代码)!!!

解决方案 »

  1.   

    你做的地图能不能让我也学习一下。另外,你可以做一个用户控件,里面放一个文本框,用于实时去数据库里找车辆信息,并存放你实时取到车辆信息,然后
    在你鼠标移动事件中,加载你的用户控件或关闭你的用户控件。希望交流一下地图制作,[email protected]
      

  2.   

    很好搞的啊
    GIS属性查询的基本功能而已
    你的地图是什么格式的?
    我刚写过arcgis类似的代码,不过不是汽车
               IArray pIDArray;
                IFeatureIdentifyObj pFeatIdObj;
                IIdentifyObj pIdObj;            //实际地图中图层第6层是信号机层
                IFeatureLayer pLayer = axMapControl1.get_Layer(5) as IFeatureLayer;
                IIdentify pIdentify = (IIdentify)axMapControl1.get_Layer(5);
                IActiveView pActiveView = axMapControl1.ActiveView;
                IMap pMap = axMapControl1.Map;
                IEnvelope pEnv = axMapControl1.TrackRectangle();            IFeatureClass pFC = pLayer.FeatureClass;
                pLayer.Name = pFC.AliasName;
                ILayerFields pLayerFields = pLayer as ILayerFields;            if (pEnv.IsEmpty == true)
                {
                    tagRECT r;
                    r.bottom = e.y + 5;
                    r.top = e.y - 5;
                    r.left = e.x - 5;
                    r.right = e.x + 5;
                    pActiveView.ScreenDisplay.DisplayTransformation.TransformRect(pEnv, ref r, 4);
                    pEnv.SpatialReference = pActiveView.FocusMap.SpatialReference;
                }
                pMap.SelectByShape(pEnv, null, false);
                pActiveView.Refresh();            //用于显示到datagridview各个中间过程
                DataSet ds = new DataSet("dsAttribute");
                DataTable dt = new DataTable(pLayer.Name);
                DataColumn dc = null;
                //属性查询
                pIDArray = pIdentify.Identify(pEnv);
                if (pIDArray != null)
                {
                    DataRow dr = dt.NewRow();
                    for (int i = 0; i <= pIDArray.Count; i++)
                    {
                        pFeatIdObj = (IFeatureIdentifyObj)pIDArray.get_Element(i);
                        pIdObj = (IIdentifyObj)pFeatIdObj;
                        IRowIdentifyObject pRowObj = pFeatIdObj as IRowIdentifyObject;
                        IFeature pFeature = pRowObj.Row as IFeature;                    if (pFeature != null)
                        {
                            //表头
                            for (int k = 0; k < pFeature.Table.Fields.FieldCount; k++)
                            {
                                dc = new DataColumn(pFeature.Table.Fields.get_Field(k).Name.ToString());
                                dt.Columns.Add(dc);
                                dc = null;
                            }
                            //各个column的值
                            for (int j = 0; j < pFeature.Table.Fields.FieldCount; j++)
                            {
                                dr[j] = pFeature.get_Value(j).ToString();
                            }
                            dt.Rows.Add(dr);
                            ds.Tables.Add(dt);
                            dataGridView1.DataSource = ds.Tables[pLayer.Name];
                            //显示dataGridView(用以显示监控点属性)
                               dataGridView1.Columns[0].Visible = false;
                            dataGridView1.Columns[1].Visible = false;
                            dataGridView1.Show();
                        }
                    }
                }
      

  3.   

    这有啥啊,直接加一个groupbox,里面存放DB检索的信息就可以了。