Google如何提供其样式地图?


14

众所周知,当Google推出Google Maps时便改变了网络地图。在撰写本文时,平铺地图现在已成为Web映射的常态。

例如,使用ArcGIS Server,您可以将尽可能多的图层缓存到缓存的地图服务中,然后根据需要通过动态或要素服务提取任何操作图层。

有了缓存的服务后,就无需重新构建新的缓存就无法调整制图。

v3 Google Maps API允许您设置Google Tiled Basemap的样式。该造型向导可以让你鼓捣几乎所有方面的谷歌地图,以满足您的需求。

从API的角度来看,我可以理解如何在JSON对象中发送样式请求。

我想知道的是,他们在后端如何做到这一点?(最好附上参考)

如果我查看带有Firebug的样式向导,并进行任何更改,我会看到进行了新的GET请求,以将PNG图像返回给客户端。

在此处输入图片说明

您可以应用近乎无限的变化,因此它们无法预先煮好所有瓷砖并准备就绪。因此,我只能假设他们正在按需创建这些图块?


1
我的猜测是,所有不同的要素类型和标签都是预煮的透明PNG拼贴,它们会针对每个请求在后端重新着色并合并在一起。
blah238

好的理论。如果是这样,那么将有很多预煮好的瓷砖。想一想到底有多少块瓷砖,然后乘以仅用于以每种十六进制颜色显示Sea的时间。
西蒙(Simon)

2
不,我的意思是它们会在飞行中重新着色。与查询实际几何图形并从头开始渲染新图像相比,对现有图像重新着色要容易得多。当然,我不知道它是如何工作的,就像您所说的,这只是一个理论:)
blah238

1
这是一个很好的理论。他们只需要更改png中的调色板,而不需要更改实际的栅格数据。
马修·斯内普

Answers:


9

在其他实现中(如在我们的实现中),这是通过调色板修改来完成的;如果您知道完整的原始调色板,则可以在不接触实际数据的情况下快速为PNG图像重新着色。

Google不会这么做;他们可能拥有基于图块的数据库和实时栅格化的矢量数据图块。


谢谢tmcw。但是,对于正确的答案,我正在寻找具有支持证据的答案。可能我们只能从理论上说明他们是如何做到的。
西蒙(Simon)

2
祝您好运,找到有关Google基础设施的任何非PR细节的支持证据:)。就是说,导致我得出这个结论(除了来自Google员工的窃窃私语)是颜色之间的抗锯齿质量以及在各种级别上删除特征的能力以及快速的重新渲染周期。
tmcw 2012年

3

我知道这并不是您要找的东西,但是我认为您可能仍然觉得它有用。您是否看到过Odoe的示例,该示例在地图上使用CSS过滤器?可能仅限于镀铬之外

http://www.odoe.net/apps/mapstyler/

https://github.com/odoe/MapStyler


是的,一直在玩这种游戏,以便以灰度级引入Bing天线。它很好地使用了css,但是磁贴仍会弹出颜色,并在加载后变为X。可能会分散注意力。相关q看过来但gmaps API stackoverflow.com/questions/13564712/...
西蒙

2

我自己问这个问题时发现了两项专利:

动态地图渲染与用户参数的关系US8103445

在基于图块的渲染系统中基于需求的纹理渲染US20110254852

找不到有关谁使用这些或类似方案的任何官方信息,但是我想第二篇论文的图纸看起来很容易实现,而且我看不出为什么不应该采用这种方法或更有效的方法的任何原因与此同时。


有趣的专利。我不确定他们是否会完全处理样式,但这很有趣。
Devdatta Tengshe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.