65.9K
CodeProject 正在变化。 阅读更多。
Home

基本 DotSpatial 桌面地图

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (9投票s)

2011年11月23日

Ms-PL

5分钟阅读

viewsIcon

54331

downloadIcon

13

如何使用 DotSpatial 控件。

引言

DotSpatial 是一个开源项目,其中包含可用于操作和显示地理信息的控件。本文提供了快速概述和功能代码,帮助您开始使用 DotSpatial。可以执行的一些基本操作包括加载 Shapefile、平移和缩放。

下载 DotSpatial

本文基于在 http://dotspatial.codeplex.com 的下载选项卡中的 DotSpatial Release Candidate 2 (1.0.845)

image

注意: 请注意,您的浏览器可能会在下载的文件中添加标识符,导致 DLL 文件被“阻止”。您可以点击以下链接了解 如何“解除阻止”文件。在解压缩 zip 文件之前,右键单击该文件,选择“属性”,转到“常规”选项卡,然后点击“解除阻止”按钮。

image

解压下载的存档后,您可以运行 DemoMap.exe 来大致了解 DotSpatial 的功能。

创建项目

启动 Visual Studio 2010 并创建一个新项目。使用 Windows Forms Application 模板,会将一个窗体添加到我们的项目中。稍后,我们将在该窗体上放置可视化元素。

image

更改目标框架

DotSpatial 要求我们的项目将 .NET Framework 4 作为目标,而不是默认的 .NET Framework 4 Client Profile。右键单击项目(或点击“项目”、“属性...”),然后选择“应用程序”选项卡,您可以在其中切换到 .NET Framework 4 目标框架。

image

如果使用 VB.NET,您需要转到“编译”选项卡,然后点击“高级编译选项...”来切换目标框架。

添加工具箱项

工具箱提供了一种将控件拖放到窗体设计表面的方法。通常,当一个控件被放到窗体上时,Visual Studio 会生成必要的代码来实例化该控件,并向项目添加所需的任何引用。您也可以通过编写适当的代码并进行任何必要的引用,而不使用设计器来实例化控件。

确保“解决方案资源管理器”可见(“视图”、“解决方案资源管理器”)。双击 Form1 将其显示在“设计”视图中。使“工具箱”可见(“视图”、“工具箱”)。可选地,通过在工具箱中右键单击并选择上下文菜单中的“添加选项卡”来创建一个新选项卡以包含 DotSpatial 控件。

image

右键单击您刚刚创建的选项卡或“常规”选项卡,然后点击“选择项...”

image

点击“浏览...”并导航到下载 DotSpatial 文件的位置。选择 DotSpatial.Controls 并点击“打开”,然后点击“确定”。

image

您应该会在工具箱中看到许多 DotSpatial 控件。

image

布局用户界面

将四个 Button 控件拖放到 Form1 的设计表面上。您可以在工具箱的“常用控件”选项卡中找到按钮。同时,将一个 Map 控件拖放到窗体上。您可能需要调整窗体大小,以便为放置控件留出更多空间。

image

添加 DotSpatial 引用

您会注意到,当您将 Map 控件拖放到 Form1 上时,Visual Studio 会添加对 DotSpatial.Controls 的引用。但是,如果此时我们尝试构建项目,会收到需要添加其他引用的通知。

通过点击“项目”、“添加引用...”来添加对关键 DotSpatial 库的引用。浏览到下载文件的位置。选择 DotSpatial.Data DotSpatial.Symbology 。您可以按住 CTRL 键同时单击文件来选择多个文件。

clip_image001

设置控件属性

我们回到窗体设计器来设置我们添加的各种控件的属性。同样,这也可以在代码中完成,但在“属性”窗口中发现属性可能更容易。选择 button1 并查看“属性”窗口(“视图”、“属性”窗口)。请注意,Text 属性是“button1”。将其更改为“Open File”。更改按钮的名称以反映其功能也是明智的。找到 (Name) 并将其更改为“uxOpenFile”。在按钮名称前加上 ux 仅仅是一种约定。您无法在控件名称中包含空格。

image

同样,更新按钮 2-4 以表示 Zoom In、Zoom Wide 和 Pan。记得重命名它们。将地图从“map1”重命名为“uxMap”。

image

如果此时运行项目,您会发现可以将文件拖放到地图控件上,但我们还没有连接按钮,按下它们也不会有任何反应。Visual Studio 中的设计器有一个快捷方式,可以创建一个按钮事件处理程序并跳转到该处理程序,以便我们添加自己的代码。双击“Open File”按钮。您将被带到相应的事件处理程序。输入以下内容:

uxMap.AddLayer();

AddLayer 方法将向用户显示一个对话框,以便他们选择要显示在地图控件上的相关文件。

通过双击 Form1 返回窗体设计器,并为 Zoom In 创建一个事件处理程序。将以下代码输入事件处理程序:

uxMap.ZoomIn();

现在,当用户点击 Zoom In 按钮时,地图视图会向前跳跃。您同样会添加以下代码来处理用户点击 Zoom Wide 按钮的情况。

uxMap.ZoomToMaxExtent();

对于最后一个按钮,不必返回设计器,只需将此代码粘贴到 Zoom Wide 事件处理程序下方即可。您需要确保将其粘贴在事件处理程序之后,并在两个尾部花括号 } 之前。

private void uxPan_Click(object sender, EventArgs e)
{
     uxMap.FunctionMode = DotSpatial.Controls.FunctionMode.Pan;
}

现在我们需要将此方法附加到 uxPan Button。双击 Form1 返回窗体设计器,并选择 uxPan Button。在“属性”窗口中,点击闪电图标以查看事件。在 Click Action 中输入 uxPan_Click

当用户点击 Pan 按钮时,光标将变为 Pan (手形) 符号。在此模式下,地图可以从右到左拖动等。虽然我们之前的事件处理程序执行方法,但此事件处理程序更改地图的 FunctionMode 。地图将保持 Pan 模式,直到用户关闭应用程序。或者,您可以添加按钮来将地图切换到其他模式。

构建并运行您的项目,并打开一个数据文件(请参阅资源部分了解示例)。

关注点

您应该可以轻松地扩展此项目,以包含用于切换 Info、Measure 和 Select 工具的按钮。

历史

  • 2011-11-11 初始发布
  • 2011-11-22 更改文章格式

资源

© . All rights reserved.