在Google Tile Server中平铺(x,y和z参数)

时间:2010-07-10 08:22:24

标签: c# wcf google-maps map tiles

我正在使用Google Tile Server。我编写了一个WCF服务(C#),它使用http URL从Google服务器获取磁贴: - http://mt1.google.com/vt/lyrs=m@129&hl=en&x=1&y=0&z=1&s=Galileo

如您所知,Google Tile在其网址中需要三个可变参数x,y和z来提供图块。

其他坐标can be seen here

我非常成功地逐个获取Google Tile(地图)(意味着设置不同的x,y和z值)。

现在来到现实世界的场景,我尝试开发一个WinForm(C#)应用程序来显示这些图块。我能够显示一个瓷砖。但我的问题是......

  1. 如何提供完整的地图集(拼接在一起的不同拼贴)? 我知道,我可以使用不同的参数向Google Tile Server提供多个调用,但我需要知道x,y和amp;的适当值是什么。 z在不同条件下与<

  2. 的连续关系
  3. 是否有任何计算,公式或映射将屏幕坐标链接到Google Tile Server坐标(表示x,y和z值)?

  4. 我必须在拖动和双击时提供平滑的缩放和平移..与Google提供的相同。

  5. 我的基本关注点是Google的x,y,z与我的屏幕坐标之间的关系。

  6. 任何帮助(或样品)都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

你想要做的事情的解释是复杂的,你必须在某种程度上弄清楚,因为事情并不是简单地自动组装(这在某种程度上是不幸的)。

尽管如此,我发现以下链接确实解决了我的无知问题,所以现在我可以更轻松地解决问题:

http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

这将解释(使用一些示例公式)如何获得所需的转换。

答案 1 :(得分:1)

您需要使用墨卡托投影从纬度/经度到Google地图图块坐标(缩放,x,y)。有关示例,请参阅https://developers.google.com/maps/documentation/javascript/examples/map-coordinates。您首先需要将Lat / Lon转换为“世界点”,然后根据缩放级别,您可以转换为代表整个世界的整个虚拟地图图像上的像素。知道了瓷砖尺寸(256 x 256),然后您可以从像素坐标转换为瓷砖坐标。 将此逻辑反转为从平铺坐标到纬度/经度。

答案 2 :(得分:1)

如果您想从lat long转到tile坐标,bing map tile页面会为您提供所需的所有方程式。 (假设每个人都使用topleft origin和256x256大小的瓷砖)。

http://msdn.microsoft.com/en-us/library/bb259689.aspx

如果您需要使用不同大小的图块,则修改公式中的常量。