原創(chuàng)|行業(yè)資訊|編輯:郝浩|2013-08-01 11:07:41.000|閱讀 489 次
概述:地理信息系統(tǒng)Map Suite為響應(yīng)廣大用戶的需求,在最新版中新增CAD (*.dwg、*.dxf)圖形顯示功能!Map Suite 7.0.46.0及以上的任何版本均適用。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
地理信息系統(tǒng)Map Suite為響應(yīng)廣大用戶的需求,在最新版中新增CAD (*.dwg、*.dxf)圖形顯示功能!使用Map Suite 7.0.46.0及以上版本中包含的新的CadFeatureLayer,可以將CAD圖形以及圖形樣式(無(wú)論是圖形自帶還是你自定義的樣式均可)嵌入到你的地圖中。
以下示例代碼介紹了在Map Suite項(xiàng)目中如何使用CadFeatureLayer。該示例運(yùn)行的前提是必須安裝7.0.46.0版本的Map Suite。CadFeatureLayer適用于任何版本的Map Suite,包括WPF Desktop Edition、WinForms Desktop Edition、Web Edition、MVC Edition和Silverlight Edition。
說(shuō)明:以下代碼全部基于C#開(kāi)發(fā)語(yǔ)言,如果你想使用其他的開(kāi)發(fā)語(yǔ)言,你可以自行下載一個(gè)免費(fèi)工具進(jìn)行代碼轉(zhuǎn)換。
using System; using System.Drawing; using System.IO; using System.Windows.Forms; using ThinkGeo.MapSuite.Core; public partial class Sample : Form { private MapEngine mapEngine; private Bitmap bitmap; private RectangleShape fullExtent; public Sample() { InitializeComponent(); } private void DisplayASimpleMap_Load(object sender, EventArgs e) { mapEngine = new MapEngine(); mapEngine.ShowLogo = true; string[] dwgFiles = Directory.GetFiles(@"..\..\Data\"); foreach (string dwgFile in dwgFiles) { sampleFileListBox.Items.Add(Path.GetFileName(dwgFile)); } // Display the first file in the list sampleFileListBox.SelectedIndex = 0; } private void sampleFileListBox_SelectedIndexChanged(object sender, EventArgs e) { CadFeatureLayer layer = new CadFeatureLayer(@"..\..\Data\" + sampleFileListBox.SelectedItem.ToString()); // Render the data using embedded style in the CAD file if (radioButtonEmbeddedStyle.Checked) { layer.StylingType = CadStylingType.EmbeddedStyling; } // Render the data using a customized style else { layer.StylingType = CadStylingType.StandardStyling; layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.SimpleColors.Black, 2, true); layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.SimpleColors.Blue, 8); layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Yellow); layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; } mapEngine.StaticLayers.Clear(); mapEngine.StaticLayers.Add(layer); Cursor = Cursors.WaitCursor; layer.Open(); fullExtent = ExtentHelper.GetDrawingExtent(layer.GetBoundingBox(), map.Width, map.Height); mapEngine.CurrentExtent = fullExtent; DrawImage(); Cursor = Cursors.Default; } private void radioButtonStandardStyle_CheckedChanged(object sender, EventArgs e) { CadFeatureLayer layer = ((CadFeatureLayer)mapEngine.StaticLayers[0]); if (radioButtonStandardStyle.Checked) { layer.StylingType = CadStylingType.StandardStyling; layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.Equator1; layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City7; layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1; layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; } else { layer.StylingType = CadStylingType.EmbeddedStyling; } DrawImage(); } private void DrawImage() { bitmap = new Bitmap(map.Width, map.Height); mapEngine.OpenAllLayers(); mapEngine.DrawStaticLayers(bitmap, GeographyUnit.Meter); mapEngine.CloseAllLayers(); map.Image = bitmap; } private void ToolBar_ButtonClick(object sender, ToolBarButtonClickEventArgs e) { switch (e.Button.Tag.ToString()) { case "Zoom In": mapEngine.CurrentExtent.ScaleDown(50); break; case "Zoom Out": mapEngine.CurrentExtent.ScaleUp(50); break; case "Full Extent": mapEngine.CurrentExtent = fullExtent; break; case "Pan Left": mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Left, 20); break; case "Pan Right": mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Right, 20); break; case "Pan Up": mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Up, 20); break; case "Pan Down": mapEngine.CurrentExtent = ExtentHelper.Pan(mapEngine.CurrentExtent, PanDirection.Down, 20); break; default: break; } DrawImage(); } private void map_ClientSizeChanged(object sender, EventArgs e) { if (map.Width > bitmap.Width || map.Height > bitmap.Height) { bitmap = new Bitmap(map.Width, map.Height); double scale = new ZoomLevelSet().GetZoomLevel(mapEngine.CurrentExtent, map.Width, GeographyUnit.Meter).Scale; mapEngine.CurrentExtent = ExtentHelper.SnapToZoomLevel((RectangleShape)mapEngine.CurrentExtent.CloneDeep(), GeographyUnit.Meter, map.Width, map.Height, new ZoomLevelSet()); mapEngine.CurrentExtent = ExtentHelper.ZoomToScale(scale, mapEngine.CurrentExtent, GeographyUnit.Meter, map.Width, map.Height); DrawImage(); } } }
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)