我正在开发一个基于网络的应用程序,我需要在每个国家或城市覆盖一些颜色层。我知道我可以使用谷歌地图,但我遇到的问题是我们部署应用程序的服务器无法访问互联网。 所以我需要像Google地图一样的地图组件,我可以离线使用它,任何人都可以建议我可以使用的任何组件吗?
答案 0 :(得分:3)
您可以查看openstreetmap。在那里,您可以下载整个世界的planet.xml文件或仅为您要服务的区域下载特定文件。也可以在这里找到好的材料:www.geofabrik.de
然后你必须设置你自己的tileserver,它将为你提供的xml文件压缩png-tiles并将所有png-map存储在你的本地硬盘上。
tileserver可能也会有一些web-api。所以你的tile服务器可以在localhost:8080或其他端口上运行,你的网站可能在端口80上的apache上运行。 然后,您将使用一些Web框架来访问您自己的tileserver。这个框架将是 可能http://openlayers.org/也可以在地图上绘制形状。 作为tileserver-location,您可以将地址添加到本地安装的tileserver。 Openlayers然后会收到碾碎的瓷砖并用它做一些事情。
因此,您必须至少从互联网(planet.xml)获取一些信息并处理您的数据。但请注意,这种运算可能需要很长时间,具体取决于您希望服务的国家/地区数量,而且这些png文件也会占用大量空间。
查看openstreetmap.org如何做到这一切,包括一些数字。
也许甚至可以从openstreetmap下载破碎的图块并按特定顺序放置它们并启动指向这些图块的图块服务器。这可能会容易得多。
您无法下载Google地图图块并在自己的图块服务器中提供这些图块,因为它们存在许可限制。
问候,
扬
答案 1 :(得分:0)
你会发现这很困难,因为单独的地图数据可能会占用几百兆的空间来存储。他们免费提供英国境内的OS provides offline mapping,但它是有限的,您必须手动将其整合到您的网站中。
拥有一个无法访问互联网的基于网络的应用程序对我来说似乎有些愚蠢,当然有办法解决这个问题吗?