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; } }
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); } } }
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; } }