1

我对在我的 Web 应用程序中提供离线地图有这个非常基本的要求。我的网络应用程序无法访问互联网,因此所有用于显示地图的在线 API 都被完全排除在外。

经过研究,我下载了所需位置(比如特定城市)的 .osm.pbf 格式文件。我

将 .osm.pbf 转换为 .osm 文件

下一步我使用这个 .osm 文件生成了切片。

瓷砖存储在我的本地目录中。

我的最后一步是在我的应用程序 (Java EE) 内的网络浏览器中将这些图块显示为地图,并根据一个地方的纬度和经度放置一个标记。

这是我必须在离线地图中显示的唯一要求。

我有一个特定城市的图块。但我不知道如何使用它并显示离线地图..

我所说的离线是指应用程序托管在应用程序服务器上的 Intranet 上,并且在任何情况下都不提供 Internet 访问。

请指导。

4

2 回答 2

1

首先,您需要一个可以下载并驻留在应用程序中的映射库。有几种,但最常见的是LeafletOpenLayers。两者都支持自定义切片图层。

例如,假设您的切片位于 Web 应用程序中名为“tiles”的文件夹中,则可能的层定义将是(在 Leaflet 中):

var map = L.map('map');
L.tileLayer('tiles/{z}/{x}/{y}.png').addTo(map);

甚至在内网的其他机器上

var map = L.map('map');
L.tileLayer('http://intranetmachine/tiles/{z}/{x}/{y}.png').addTo(map);
于 2012-12-05T09:55:28.613 回答
1

您快到了。

在本地保存传单 .js 和 .css 文件。

查看这个基本示例的源代码:http: //leafletjs.com/examples/quick-start-example.html

将 .css、.js 路径更改为本地副本,并将 tileLayer 路径更改为本地,如所述。

查看标记的代码:

L.marker([51.5, -0.09]).addTo(map)
            .bindPopup("<b>Hello world!</b><br />I am a popup.").openPopup();

我猜这就是你需要的。如有必要,删除其他多边形和 click-show-lat-long 功能。

如果您希望地图全屏显示,请将<div..标签更改为 100%。

<div id="map" style="width: 100%; height: 100%"></div>
于 2015-01-12T05:45:07.347 回答