示例#1
0
 public void StartEdit(Layer layer)
 {
     if (IsEditing)
     {
         MapOption   = MapOptionStatus.Edit;
         this.Cursor = mCur_Cross;
     }
     else if (layer != null)
     {
         MapOption   = MapOptionStatus.Edit;
         this.Cursor = mCur_Cross;
         RSTransform transform = new RSTransform_WGS84_WEBMOCARTO();//????????????????????????????坐标系问题
         editmanager = new EditingManager(layer, transform);
         IsEditing   = true;
     }
 }
示例#2
0
        private void paintmap(Graphics g, Graphics text_g, mapcontent mapcontent)
        {
            if (mapcontent == null)
            {
                return;
            }
            List <Layer> layerlist = mapcontent.layerlist;

            for (int i = layerlist.Count - 1; i >= 0; i--)
            {
                Layer layer = layerlist[i];
                if (layer.visible)
                {
                    //获取targetSRS,sourceSRS,然后获取RSTransform对象///////????????????????????????????????????????????????
                    RSTransform rstransform = new RSTransform_WGS84_WEBMOCARTO();
                    paintLayerbyStyle(g, text_g, layer, rstransform);
                }
            }
        }
示例#3
0
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            RSTransform rstransform = new RSTransform_WGS84_WEBMOCARTO();

            switch (MapOption)
            {
            case MapOptionStatus.ZoomIn:
                if ((screen_rect.Width <= 4 && screen_rect.Height <= 4))
                {
                    PointD upPoint   = new PointD(e.X, e.Y);
                    PointD sMapPoint = ToMapPoint(upPoint);
                    ZoomByCenter(sMapPoint, mcZoomRation);
                    mapcontrol_refresh();
                }
                else
                {
                    zoominbyrectangle(screen_rect);
                    mapcontrol_refresh();
                }
                break;

            case MapOptionStatus.Identify:
                if (screen_rect.Width <= 4 && screen_rect.Height <= 4)
                {
                    screen_rect = new System.Drawing.Rectangle(e.X - interval, e.Y - interval, 2 * interval, 2 * interval);
                }
                GisSmartTools.Geometry.Rectangle maprect = ToMapRect(screen_rect);
                if (mapcontent.layerlist.Count == 0)
                {
                    return;
                }
                if (focuslayer == null)
                {
                    focuslayer = mapcontent.layerlist[0];
                }
                //获取坐标转换接口函数
                Filter_Envelop    filter     = new Filter_Envelop(maprect, rstransform);
                FeatureCollection collection = focuslayer.featuresource.GetFeatures(filter);
                if (collection.featureList.Count != 0)
                {
                    paintadditionalfeaturecollection(collection);
                    RaiseAfterSelectedFeaturesEvent(collection);
                }
                else
                {
                    mapcontrol_refresh();
                }
                break;

            case MapOptionStatus.Pan:
                break;

            case MapOptionStatus.Edit:
                if (e.Button == System.Windows.Forms.MouseButtons.Left)
                {
                    switch (editmanager.editstatus)
                    {
                    case EditStatus.editing:
                        editmanager.Addpoint(editmanager.rstransform.targetToSource(ToMapPoint(new PointD(e.X, e.Y))));
                        break;

                    case EditStatus.finished:
                        if (screen_rect.Width <= 4 && screen_rect.Height <= 4)
                        {
                            screen_rect = new System.Drawing.Rectangle(e.X - interval, e.Y - interval, 2 * interval, 2 * interval);
                        }
                        GisSmartTools.Geometry.Rectangle maprect_select_edit = ToMapRect(screen_rect);
                        Layer tmplayer = this.mapcontent.GetLayerByName(editmanager.layername);
                        if (tmplayer == null)
                        {
                            this.mapcontrol_refresh(); return;
                        }
                        //获取坐标转换接口函数
                        Filter_Envelop filter_select_edit = new Filter_Envelop(maprect_select_edit, rstransform);
                        editmanager.selectedFeatureCollection = tmplayer.featuresource.GetFeatures(filter_select_edit);

                        if (editmanager.selectedFeatureCollection.featureList.Count != 0)
                        {
                            paintadditionalfeaturecollection(editmanager.selectedFeatureCollection);
                            editmanager.editstatus = EditStatus.selected;
                        }
                        else
                        {
                            mapcontrol_refresh();
                        }

                        break;
                    }
                }
                break;

            case MapOptionStatus.select:
                if (screen_rect.Width <= 4 && screen_rect.Height <= 4)
                {
                    screen_rect = new System.Drawing.Rectangle(e.X - interval, e.Y - interval, 2 * interval, 2 * interval);
                }
                GisSmartTools.Geometry.Rectangle maprect_select = ToMapRect(screen_rect);
                if (mapcontent.layerlist.Count == 0)
                {
                    return;
                }
                if (focuslayer == null)
                {
                    focuslayer = mapcontent.layerlist[0];
                }
                //获取坐标转换接口函数
                Filter_Envelop    filter_select     = new Filter_Envelop(maprect_select, rstransform);
                FeatureCollection collection_select = focuslayer.featuresource.GetFeatures(filter_select);
                if (collection_select.featureList.Count != 0)
                {
                    paintadditionalfeaturecollection(collection_select);
                }
                else
                {
                    mapcontrol_refresh();
                }
                break;
            }
        }