它可能是一种迂回的方式,但您可能会在SilverlightEarth.com的javascript和XAML中找到一些有用的东西,它们是基于Silverlight 1.0的map-tile-client.它可以加载VE,谷歌,雅虎(有一个DeepZoom版本也可以加载OpenStreetMap,Moon和Mars;但由于它使用MSI,它在WPF 3/3.5前端并没有真正的帮助).
虽然javascript有点不整洁,但你可以清楚地看到它正在创建一个Silverlight 1.0 Xaml(动态大小)Canvas,用tile(图像控件)填充它并处理放大/缩小和平移请求.你需要理解所有的javascript并将其转换为C# - XAML应该主要进入WPF.我已经使用深度缩放平铺金字塔(以及此处)测试了这个Silverlight 1.0,因此这些概念是适用的(即不仅适用于地图).
我知道这是有效的,因为我自己完成了在Geoquery2008.com(截图)中构建地图查看器,这是WPF/c#.遗憾的是,Geoquery2008程序集是混淆的,但您仍然可以通过DASM/Reflector收集一些想法或有用的代码.它仍然是测试版,所以我不会声称它是100%完成的.我并没有真正想过将地图代码分解为一个单独的控件,但如果另一个没出现,我可能会调查一下...
顺便说一下,我也开始使用ScrollViewer,但我打算放弃它并更仔细地模仿javascript,以便在平移/缩放时更容易重新使用Image对象(通过获得对ScrollViewer提供的更多控制).
Virtual Earth磁贴系统上的这些MSDN页面以及Deep Zoom文件格式和相关链接可能也是一个有用的参考.
最后 - 我猜你自从这篇文章以来就看到DeepZoom/MultiScaleImage很可能出现在.NET 4.0/Studio 2010中.
主要问题是如何存储和访问要放入地图中的项目(假设这不仅仅是图片显示)。查找场景图以获得一些想法。
另外,如果您希望它不仅仅是一个玩具图像查看器,则 lat long 到 XY 缩放会变得“有趣”
| 归档时间: |
|
| 查看次数: |
16317 次 |
| 最近记录: |