首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF地图控件的设计

WPF地图控件的设计
EN

Stack Overflow用户
提问于 2008-09-17 19:16:29
回答 10查看 17.5K关注 0票数 12

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

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

  1. 基础画布的lat/长计算,控制定位,Z-索引堆叠。
  2. 在不同缩放级别上表示映射的多个Grid元素。使用网格使打瓷砖更容易。
  3. 用位置数据映射对象。
  4. 地图控件(缩放滑块、概览等)。
  5. 滚动查看器与鼠标移动事件,以进行摇摄和缩放。

关于我应该如何建立这个问题,有什么建议吗?

EN

回答 10

Stack Overflow用户

发布于 2008-09-17 22:11:53

如果您正在寻找一个好的开端,您可以使用SharpMap项目提供的代码基础,然后从那里构建。如果我还记得有几个人已经在为SharpMap开发一个WPF渲染器,那么您可能也有一些代码要开始。

我个人在一个将SharpMap数据和实时C#数据结合起来的C# 2.0应用程序中使用了GIS2.0,它非常成功。SharpMap为我提供了处理地理信息系统数据的转换套件,以及处理改变地理信息的数学基础。使用WPF前端的非呈现代码应该相对简单,因为它们已经将表示与数据分离了。

(编辑:添加了关于我如何使用SharpMap的更多细节)

票数 9
EN

Stack Overflow用户

发布于 2008-12-02 00:53:20

这可能是一种迂回的方式,但您可能会在SilverlightEarth.com的javascript和XAML中找到一些有用的东西,后者是一个基于Silverlight 1.0的地图贴片客户端。它可以加载VE,谷歌,雅虎(有一个DeepZoom版本,也可以加载OpenStreetMap,月球和火星;但由于它使用MSI,它并没有真正帮助在WPF 3/3.5前面)。

尽管javascript有点乱七八糟,但您可以清楚地看到它正在创建Silverlight 1.0 Xaml (动态大小)画布,将其填充为tiles (Image控件),并处理放大/缩小和pan请求。您需要理解所有的javascript并将其转换为C# - XAML大部分应该不受更改地进入WPF。我有测试了这个Silverlight 1.0与深缩放瓷砖金字塔 (和这里),所以这些概念是适用的。而不仅仅是地图)。

我知道这是因为我自己在Geoquery2008.com (屏幕截图)中构建了地图查看器,这是WPF/c#。不幸的是,Geoquery2008程序集被混淆了,但是您仍然可以通过DASM/Reflector收集一些想法或有用的代码。这仍然是一个测试版,所以我不会声称它是100%完成。我并没有真正考虑将地图代码分解成一个单独的控件,但是如果另一个控件没有出现,我可以研究一下.

顺便说一句,我也是从ScrollViewer开始的,但我正计划放弃它,更紧密地模仿javascript,这样在摇摄/缩放时更容易重用Image (通过获得比ScrollViewer提供的更多的进程控制权)。

虚拟地砖系统深度缩放文件格式以及相关链接上的这些MSDN页面可能也是一个有用的参考。

最后--我想你从这篇文章开始就看到了DeepZoom/MultiScaleImage很可能会出现在.NET 4.0/Studio 2010中。

票数 5
EN

Stack Overflow用户

发布于 2008-09-17 22:02:18

您创建WPF映射工具的愿望与我的类似,这导致我从Silverlight询问这个问题有关DeepZoom (又名MultiScaleImage)的信息。我想要一个WPF版本。接受的答案提供了一个指向一个非常好的起点的链接(类似于您描述的思想过程)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/86570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档