我需要在画布上渲染大量的六边形。我想这样做,我只渲染用户可见的图块,并在用户滚动时加载其他六边形(使用拖动或箭头键或平移控件)。我脑子里已经有了基本的想法,但我正在寻找帮助,想出一个能够很好地扩展的更强大的解决方案。
我的想法和现在可以做的事情:
一个。识别需要加载到屏幕的图块并获取用于从服务器呈现它们的数据 湾当用户拖动时,找出需要加载的新瓷砖组并获取数据并重新加载整个屏幕。
这有效,但它没有滚动的感觉 - 它本质上突然重新定位了一切。理想情况下,我想在滚动这个时获得谷歌地图的感觉。我一直在玩地图一边加载一些瓷砖,只在拖动时滚动底层画布,但这不能很好地工作,因为画布耗尽...如果我有一个画布,它会非常整洁表现得像一个循环缓冲区,所以在任何方向滚动只在内存中保留一定数量的磁贴,我可以连续滚动所有方向。
非常感谢任何想法或有用的提示。
谢谢!
答案 0 :(得分:0)
我建议使用Google Maps Flash API作为起点。您可以创建一个CustomTileLayer,如果您有一个大的源图像,您可以搜索图像金字塔制作者,将图像切割成不同缩放级别的样本(通常我相信它最终会创建一个使用缩放级别的文件夹结构作为文件夹名称,然后根据图像的res和缩放级别在每个文件夹中包含x,y个tile。如果不以任何方式要求缩放,则只需要一个缩放级别,并且想要在地图控件中禁用任何缩放控件。让我知道你是否有理由避免这种情况或认为它不是一个好的解决方案(可能只是没有意识到它存在但我想如果你想要像谷歌地图的行为,为什么不使用谷歌地图作为基础)。如果你在挖掘之后需要更多的帮助让我知道并且我很乐意提供帮助,我自己也没有实现过CustomTileLayer,但是对谷歌地图Flash API有一点经验(它也很灵活)你使用正确的swc一个是Flash而另一个是Flex不包括两个)。
祝你好运, 肖恩http://nl-samples.googlecode.com/svn/trunk/flexmap/9a/bin-release/CustomProjection.html