将单个大图像叠加转换为Google地图的图块

时间:2011-05-11 06:56:21

标签: google-maps google-maps-api-3 tile

我有一张大型高分辨率图片,我正在使用Google Maps v3 API进行叠加。这适用于具有合理网络连接的台式机和笔记本电脑,但不出所料,它对移动用户来说效果不佳。

在各种缩放级别将图像分解为2D图块的最佳/最简单方法是什么?因此我可以通过API充当Google地图的图块服务器?

是否有一个程序可以为我可靠地生成切片并为每个生成的切片提供必要的缩放和坐标和/或如果我提供缩放和坐标,则给我正确的切片?

一旦收集到正确的信息,是否可以轻松编写磁贴服务器来实现它?也许那里有我可以用作模型的源代码? (我在http://blog.gmapify.fr/a-map-tile-server-part-2-understanding-google-maps-tile-overlays-and-building-up-a-tile-server找到了一个平铺服务器,这肯定是有帮助的,但是它不提供来自源图像的平铺,所以我必须至少计算出那个部分......)

或者也许有一步一步的算法,如果更直接的话我可以手动跟进? (因为它只有一个图像,并且它覆盖了地图上可能是一平方英里的区域,如果不是这样的话,手动执行它可能是可行的。)

3 个答案:

答案 0 :(得分:13)

您可以查看MapTiler http://code.google.com/p/maptiler/。它可以生成您需要的瓷砖。

平铺服务器非常容易编写。最简单的方法是在目录结构中托管静态文件(您的磁贴)。然后目录结构通常是servername / zoom / x / y.png(或zoom / y / x.png)。这种结构也由MapTiler生成。 MapTiler还使用图块生成示例网页(但我猜它使用Google Maps API v2)。

有关在Google Maps API v3中使用图块的信息,请访问:http://code.google.com/apis/maps/documentation/javascript/maptypes.html#CustomMapTypese

答案 1 :(得分:4)

你可以在没有平铺预切割的情况下完成客户端的整个事情

请参阅https://github.com/Murtnowski/GMap-JSlicer

slicer = new JSlicer(document.getElementById('map'), 'myImage.png');
slicer.init();

很简单。

答案 2 :(得分:2)

有一个非常好的视频教程,用maptiler制作地图,可以在这里找到:
Mobile Maps That Aren't Terrible

它专注于移动地图,但也涵盖了maptiler和其他基础知识。我觉得非常有帮助。