我正在编写一个基于必应地图的Windows和Windows 8通用应用程序,它显示了一些相当大的地图层。
编写最初的应用程序是没有问题的(我在http://blogs.msdn.com/b/rbrundritt/archive/2014/06/24/how-to-make-use-of-maps-in-universal-apps.aspx上学习了这个教程),但是我现在遇到了很大的问题,在绘制一个包含数千个多行代码的图层时,有成千上万的协调程序。
数据太大了--在Windows8.1上,地图崩溃了应用程序,而在Windows 8.1上,显示层需要很长时间。
根据http://blogs.msdn.com/b/bingdevcenter/archive/2014/04/23/visualize-large-complex-data-with-local-tile-layers-in-bing-maps-windows-store-apps-c.aspx,我应该通过将它转换成本地平铺层来加快速度,但是本文中提到的程序(MapCruncher)需要一个PNG作为输入。问题是,如何将地图数据转换为PNG?我可以将数据作为shapefile、KML文件或CSV文件。还有别的办法我应该这么做吗?我知道我可以通过Geoserver来完成这个任务,但是我的应用程序必须有离线支持,所以不能根据需要从web服务器下载适当的文件。
如果任何人有其他的方法,我可以处理这个速度问题与大层,那么这将是非常感谢。我知道我可以通过四叉树来加速Bing地图中一个图层的绘制,但是我发现的大部分都是理论上的。如果有人有我可以插入的代码,那将是非常有用的。
发布于 2014-09-27 19:30:06
如果您只在一个小区域中有数据,或者只想显示几个缩放级别的数据,本地瓷砖层就很好了。否则,瓷砖的数量将急剧增长,并将使您的应用程序巨大。如果您的数据定期更改,或者您希望支持地图的所有缩放级别,则应该将数据存储在服务器上,并将其公开为动态平铺层。动态瓦片层是一个web服务,它根据需要从您的数据中生成一个余额。您可以将缓存添加到这些块中以提高性能。这是处理大型数据集的最佳方法,我经常使用这种方法。实际上,我这里有一个演示:http://onsbingmapsdemo.cloudapp.net/ --这个数据集由175,000个复杂多边形组成,相当于大约2GB的数据。
我在这里有一篇关于如何做到这一点的博客文章:http://rbrundritt.wordpress.com/2009/11/26/dynamic-tile-layers-in-the-bing-maps-silverlight-control/
如果您更喜欢使用MVC,您可能会发现这些项目很有用:https://ajaxmapdataconnector.codeplex.com/
https://stackoverflow.com/questions/26073430
复制相似问题