设计 WPF 地图控件

2024-01-30

我正在考虑在 WPF 中制作一个简单的地图控件,并且正在考虑基本地图界面的设计,并且想知道是否有人对此有一些好的建议。

我想到的是使用 ScrollViewer (无滚动条)作为我的“视图端口”,然后将所有内容堆叠在画布上。从 Z-Index=0 开始,我在想:

  1. 用于纬度/经度计算、控制定位、Z 索引堆叠的基础画布。
  2. 多个网格元素来表示不同缩放级别的地图。使用网格使平铺更容易。
  3. 使用位置数据映射对象。
  4. 地图控件(缩放滑块、概览等)。
  5. 使用鼠标移动事件滚动查看器以进行平移和缩放。

关于我应该如何构建这个的任何评论建议?


如果您正在寻找一个好的开始,您可以使用由SharpMap https://github.com/SharpMap/SharpMap项目并从那里进行构建。如果我记得有几个人已经在为 SharpMap 开发 WPF 渲染器,那么您可能也有一些代码可以开始。

我个人曾在 C# 2.0 应用程序中使用 SharpMap,将 GIS 数据与实时 GPS 数据相结合,并且非常成功。 SharpMap 为我提供了处理 GIS 数据的转换套件,以及用于更改 GIS 信息的数学基础。在 WPF 前端中使用非渲染代码应该相对简单,因为它们已经将表示与数据分开。

(编辑:添加了有关我如何使用 SharpMap 的更多详细信息)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计 WPF 地图控件 的相关文章

  • 使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable

    我已经尝试了一切但一无所获 所以我希望有人能给我一个顿悟的时刻 我根本无法获得成功提取数据网格中数据的绑定 我有一个包含 MyDataType 的多列的 DataTable public class MyData string nameDa
  • 使用MVVM Light的Messenger在视图模型之间传递值

    有人可以帮我解释一下 MVVM Light 的 Messenger 吗 我正在阅读 StackOverflow 上的一篇文章 MVVM 在视图模型之间传递值 https stackoverflow com questions 6392854
  • 拖动用户控件,但将其保留在 WPF 中其父级的边界内

    我有一个用户控件 正在将其拖动到网格内 Z Index 设置得相当高 这样我就可以将其保持在其他孩子之上 拖动控件效果很好 但如果用户想要将控件移到网格之外 它会允许这样做 How do I keep it from leaving the
  • TargetType="controlType" 和 TargetType="{x:Type controlType}" 之间的区别

    在 WPF 中 您可以设置TargetType类型的名称 或者您可以将其设置为 x Type nameOfType 有谁知道有什么区别 没有什么 由于属性类型是Type XAML 解析器知道尝试将您提供的任何内容转换为Type 在其他情况下
  • WPF - 检测鼠标按下一段时间

    检测鼠标按钮何时在特定元素上按住特定时间段的最佳方法是什么 感谢您的提示 我创建了一个附加属性以避免任何代码隐藏 using System using System Windows using System Windows Threadin
  • 如何在 WPF 中实现虚线或点线边框?

    我有一个ListViewItem我正在申请Style到 我想把灰色虚线作为底部Border 我怎样才能在 WPF 中做到这一点 我只能看到纯色画笔 这在我们的应用程序中效果很好 允许我们使用真正的边框而不是乱用矩形
  • 为什么无法将 WPFToolkit DataGrid ItemSsource 绑定到 DataTable?

    In a Telerik控制 我能够绑定DataTable直接到ItemSource 但是当我切换到 Codeplex 时WPFToolkit Datagrid
  • WPF DataGrid 绑定 DataGridCell 内容

    希望这将是一个非常简单的答案 我认为我只是没有看到众所周知的树木 我有一个 DataGridCell 样式 我想将单元格的内容绑定到图像的源属性 这是我目前使用的 XAML
  • WPF 元素宿主内存泄漏

    我在 Windows 窗体上使用元素主机时遇到奇怪的内存泄漏 我有一个主窗体 它打开另一个窗体 该窗体上只有 elementhost 控件 此时 它没有 wpf 控件子控件 只能打开 1 个主机表单 每次我打开窗体时 应用程序内存都会增加2
  • 获取代码中的绑定结果

    我可能正在以错误的方式寻找这个 但是 有没有办法通过代码获取绑定的结果值 可能是一些显而易见的东西 但我就是找不到它 您只需致电ProvideValue的绑定方法 困难的部分是你需要通过有效的IServiceProvider到方法 编辑 实
  • 网格内的 ContentPresenter 可见性绑定不起作用?

    我有以下网格
  • 无法使用 DialogResult

    我尝试使用DialogResult检查一个Messagebox s 是 否 取消 我正在使用以下代码 我没有看到任何问题 DialogResult dlgResult MessageBox Show Save changes before
  • 使 DataTemplate 可混合

    如何为 ViewModel 制作可混合的数据模板 可在表达式混合中设计 当我转到资源并尝试直接编辑数据模板时 我在绘图板上看到的只是一个空白矩形 这是因为 DataTemplate 没有绑定到任何东西 当然 我可以创建一个 UserCont
  • 先学Silverlight还是先学WPF?

    看来 Silverlight WPF 是 NET 用户界面开发的长期未来 这很棒 因为我可以看到在客户端和 Web 开发端重用 XAML 技能的优势 但看看 WPF XAML Silverlight 它们似乎是非常庞大的技术 那么从哪里开始
  • CommandManager.InvalidateRequerySuggested 不会导致对 MVVM-Light 中的 CanExecute 进行重新查询

    我正在使用 MVVM Light RelayCommand private ICommand myRevertCmd public ICommand Revert get if myRevertCmd null myRevertCmd ne
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • WPF控件默认大小

    为 wpf 应用程序定义自定义资源主题时 我可以设置宽度 高度等 如何找到这些属性的默认值 即框架中提供的控件中使用的值 WPF 控件通常不包含任何类型的默认大小 WPF 的主要功能点之一是 除非您指定大小 否则所有内容都会动态调整大小 如
  • WPF 创建同级窗口并关闭当前窗口

    我需要的是我的窗口类中的这样一个事件处理程序 void someEventHandler object sender RoutedEventArgs e MyNewWindow mnw new MyNewWindow mnw Owner W
  • 解释 System.Diagnostics.CodeAnalysis.SuppressMessage

    我在某些应用程序中有这种代码 来自微软 assembly System Diagnostics CodeAnalysis SuppressMessage Microsoft Naming CA1702 CompoundWordsShould

随机推荐

  • 随机数生成:如果我运行,则在 C# 中返回相同的数字。好吧,如果一步一步调试

    我在 C 中生成随机数时遇到问题 如果我RUN直接使用此表单应用 随机数生成对于所有人都是相同的 If i DEBUG逐行按F10 就会产生不同的随机数 为什么会发生这种情况 我应该怎么做才能生成不同的随机数 灰狗 cs using Sys
  • Directory.Move 子文件夹和父文件夹时 IOException 访问被拒绝

    我正在尝试重命名具有子文件夹的多个文件夹 但是当我在子文件夹上使用 Directory Move 时 父文件夹似乎被锁定 My code var pathParent D test f1 var pathSub D test f1 f2 v
  • Android SensorManager 中的 getSensorList() 与 getDefaultSensor()

    我正在为 Android 编写一个游戏 希望能够使用加速度计进行输入 我看到有两种获取传感器的方法 一种方法是使用第一个元素SensorManager getSensorList Sensor TYPE ACCELEROMETER 另一个是
  • ASP 文件上传静默失败

    我在使用 FileUpload 处理大文件时遇到问题 如果我上传一个小文件 10kB 它工作得很好 上传大文件 60MB 不会引发异常 它只是重新加载页面 在有人问之前
  • 如何从 R 中的 ols 对象中提取斜率的 p 值

    If I do data mtcars m1 lt lm mpg cyl data mtcars x TRUE y TRUE 然后我可以使用提取斜率的 p 值summary m1 coefficients 2 4 但如果我这样做 libra
  • 从 GitHub 上托管的存储库的多个分支获取提交

    我想使用 RSS 源显示托管在 GitHub 上的存储库上的提交活动 我正在使用网址 https github com RiverDonkey Drupal Mailcheck commits atom 但问题是这将导致仅从基础分支 在本例
  • 如何在 PyCharm 中下载文件而不是 Colab 中的 !wget? [复制]

    这个问题在这里已经有答案了 当我在pandas中尝试一些代码时 bash代码wget在colab中使用如下 import pandas as pd wget abc com sales csv 如果我想使用 PyCharm 下载上述互联网文
  • 如何用AJAX和MVC实现文件下载

    我想通过使用 jQuery AJAX 调用和 MVC 下的一些参数来提供文件下载操作 Example javascript function DoDownload startDate ajax url controller GetFile
  • 在选定文本周围插入标签

    我环顾四周 但其他答案并没有真正帮助我 我想创建一个小型所见即所得编辑器 只需要有添加链接和添加列表的选项 我的问题是 当单击链接 按钮之一 例如 添加链接 时 如何在文本区域中的选定文本周围附加标签 我已经编写了一个 jQuery 插件来
  • JMeter 将变量设置为随机选项

    我一直在使用 JMeter 我知道 Random and RandomString功能 我需要选择一个随机选项并将其存储在变量中 因为它将用作多个调用的参数路径的一部分 例如 http www example com pets random
  • 模块构建失败:错误:`sass-loader` 需要 `node-sass` >=4。请安装兼容版本

    你能帮助我吗 当我点击 ng s 时出现此错误 ERROR in src styles scss node modules raw loader node modules postcss loader lib embedded node m
  • 未知函数断言失败

    我正在使用这个程序来读取和显示图像 我不知道为什么它显示这个奇怪的错误 断言失败 scn 3 scn 4 在未知函数中 文件 src modules imgproc src color cpp第3326行 我更改了一些图像 有时它运行时没有
  • MySQL CREATE TABLE 语句中的主键定义

    这段代码有什么区别 CREATE TABLE samples sampleid INT 11 NOT NULL AUTO INCREMENT sampledate DATE NOT NULL location VARCHAR 25 NOT
  • 如何为 traefik 启用 logrotation?

    如何启用日志文件的日志轮转 例如访问日志 这是内置的吗 文档只说 这允许日志由外部程序轮换和处理 例如 logrotate 如果你正在跑步Traefik in a Docker容器然后你可以做这样的事情 检查 Docker 主机上是否安装了
  • 在Python中查找两个等值线图的交集

    我想知道是否有人可以给我找到两个等高线图交集的线索 理想情况下 它将采用一对轮廓 然后返回交点的坐标 Z1 somefunction Z2 somefunction1 Z3 somefunction2 xlist np linspace 0
  • Django allauth 示例 [Errno 61] 连接被拒绝

    当我运行 django allauth example 并尝试发送电子邮件时出现以下错误 File System Library Frameworks Python framework Versions 2 7 lib python2 7
  • 如何在 Matlab 中更新 scatter3 图(循环)

    这是一个非常简单的问题 但在网上找不到答案 我想可视化从激光雷达收集的点云 我可以绘制各个帧 但想循环它们以创建 动画 我知道如何使用 Drawingow 处理正常绘图 但无法使用 scatter3 处理它 如果我只是像在注释代码中所做的那
  • 如何检测有人摇晃 iPhone?

    我想在有人摇晃 iPhone 时做出反应 我并不特别关心他们如何摇动它 只是在瞬间用力挥动它 有谁知道如何检测这个 在 3 0 中 现在有一种更简单的方法 挂钩新的运动事件 主要技巧是您需要有一些 UIView 不是 UIViewContr
  • 将 box-shadow 设置为一组 HTML 元素

    我有两个元素 它们的侧面相互接触 它们的接触面具有不同的尺寸 尺寸 它们都需要在下面有一个阴影 问题是其中一个阴影总是覆盖其同级元素 我可以玩z index但这只是意味着我将选择两者中的哪一个将被兄弟姐妹的阴影覆盖 如果可以向一组元素添加阴
  • 设计 WPF 地图控件

    我正在考虑在 WPF 中制作一个简单的地图控件 并且正在考虑基本地图界面的设计 并且想知道是否有人对此有一些好的建议 我想到的是使用 ScrollViewer 无滚动条 作为我的 视图端口 然后将所有内容堆叠在画布上 从 Z Index 0