设计 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 地图控件 的相关文章

随机推荐

  • 随机数生成:如果我运行,则在 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