谷歌地图背后的技术名称是什么,它允许服务器只发送用户请求的地图部分以提高性能,是否有任何库来处理这个问题?
13 回答
该技术通常可以描述为地图服务器。地图服务器从覆盖整个地球的大量预先生成的地图瓦片图像中为请求的位置生成地图。地图服务器可能会在此之上覆盖来自其他数据库的数据。地图查看器客户端和地理数据库的组合传统上称为地理信息系统(GIS)。
任何人都可以使用Google Maps API编写嵌入 Google 地图的 Web 应用程序。如果您希望部署自己的地图服务器,还有一个很好的开源地图服务器(称为MapServer )。
如前所述,Google 生成了所有这些 256x256 的图块,并且只提供相关的图块。从您的评论看来,您正在寻找可以为您生成这些图块的东西。有几个人编写了代码来将图像分割成图块 - 例如http://crazedmonkey.com/blog/googletilecutter或http://www.klokan.cz/projects/gdal2tiles/两者似乎都可以做你想做的事情为了。
如果您查看谷歌地图页面的链接,它将如下所示:
http://maps.google.com/maps?f=q&hl=en&sll=37.0625,-95.677068&sspn=53.345014,88.769531&ie=UTF8&ll=41.226264,-81.454246&spn=0.012507,0.021672&z=16
页面上的 javascript 代码和服务器代码使用链接中的数字来确定您正在查看的地图的位置、缩放级别和查看窗口的大小来确定要发送到浏览器的图块。
有一些商业库可以提供映射数据以及显示和导航数据的工具。我以前见过的一个是Geomicro
您还可以将Google Maps API与您自己的图像一起使用。当然,它们不需要是地图;它们可以是任何图像。这将允许用户拖动和缩放,就像在谷歌地图中一样。
您可以使用 OpenSource、 http ://www.geoserver.org http://www.openlayers.org 以及最后但并非最不重要 的http://geowebcache.org/来尝试这一点
您应该能够在几个小时内设置一个类似于 maps.google 的最小环境。
以下是 EveryBlock.com 的创始人之一生成基于 Web 的地图的开源堆栈的一个很好的概要:http ://www.alistapart.com/articles/takecontrolofyourmaps
基础学科的通用名称是GIS。
您是出于一般的好奇心而询问更多细节,还是您对项目有特定的技术需求?
谷歌从销售这些图像的服务中获取高清卫星照片,然后存储和裁剪这些图像,并仅提供您查看某个点时需要的图像。也就是说,您是否注意到当您放大和缩小时会看到出现方形瓷砖?这些是 Google Server 为您服务的。
您还必须考虑他们如何使用 Google 文件系统和 MapReduce 处理负载
Google 地图和 Google 地球使用称为 KML 或“Keyhole 标记语言”的东西,它是 XML 的一种特殊变体。它的命名是为了向第一颗地理跟踪卫星致敬。您可以使用此标记对其特定的纬度和经度坐标进行地理编码,从而将信息存储在 Google 地球中(它最终会渗透到 Google 地图)。你甚至可以包括高度。
它只是一个巨大的图像,由独立下载的方形块组成(使用 AJAX 等)。我相信它是由某种内部 Google 库(也可能是 GWT)完成的。
有关此主题的更多信息:http: //blog.grimpoteuthis.org/2005/02/mapping-google.html
不回答这个问题,只是更广泛的信息。微软为 Silverlight 提供了一种名为“深度缩放”的功能,可以轻松实现这种效果。
它是一个免费的作曲家,您可以在其中平铺您的图片(或一张大图片)并进行一些其他设置,然后将其分解为子文件夹中的许多较小的图片,每个缩放级别一个文件夹。然后创建一个可以流畅地使用它们的页面。
关于它的一个很好的博客条目: http ://weblogs.asp.net/jgalloway/archive/2008/03/21/why-silverlight-2-deep-zoom-really-is-something-new.aspx
我正在开发一个跨浏览器查看器,以查看非常大的历史计划和草图。对我在http://www.cadmaps.com/gisblog/?p=7上找到的第一步(一个旧博客)有很好的帮助, 以了解图像金字塔(这就是谷歌地图的工作原理)。
使用“tiler”,我生成了很多图像,例如 testImage_0001111100.png。0001111100 即图像金字塔中的第 5 个缩放级别和 x/y 位置。大多数计算(邻居图像,图像堆叠上下)是由 ajax 请求调用的 php 在服务器端完成的。
我目前正在为平滑移动和缩放方面的(并非无法解决的)问题而苦苦挣扎。那是我的问题 - 但请阅读这篇文章。