2

我的数据库中有一个表,其中包含 2.500 个图块,因此为 50 x 50。前端大小为每个图块 256 像素 x 256 像素,应该没有缩放级别。然后是保存其他数据(建筑物、对象)的表,并且这些对象中的每一个都可能属于某个图块。

在前端,我想使用全屏 OpenLayers 来显示一组图块来填充屏幕,并且只使用拖动和异步。重新加载 OpenLayers 提供的图块。如果可能,如果到达世界地图的边界,甚至会自动停止拖动。

我也不想渲染图像(png) - 瓷砖应该是空<div>的或至少是透明的,因为身体的背景无论如何都是重复的草纹理,我想<img>根据与模型中的平铺。

任何熟悉 OpenLayers 的人都可以告诉我在后端使用如此简单的自定义模型是否可行?有关此特定案例的任何资源都会非常有帮助!

4

1 回答 1

2

是的,如果表中的每个图块都有一些与之关联的地理空间数据,例如边界或角的纬度/经度,这在 OpenLayers 中是可能的。

OpenLayers 希望在浏览器的视口中按地理空间放置基础图层(您的瓦片为 WMS)和要素(您的建筑物和对象为 WMS、WFS 或矢量)。诀窍是将 OpenLayers 限制为单个缩放级别(分辨率)以匹配存储切片的隐式分辨率,然后设置 OpenLayers.Map 对象的 maxExtent 以匹配所有切片的范围,以便生成每个 WMS 切片请求由 OpenLayers 提供的边界框与您的一个图块相匹配。

这是 OpenLayers 为我拥有的简单基础层生成的 WMS 请求(BBOX 以米为单位)。该链接位于防火墙后面,因此对您不起作用:

http://kpnatsp8:9080/WmsServlet?SERVICE=USSTATES&TRANSPARENT=FALSE&FORMAT=image/png&LAYERS=USSTATES&SCALE=4000000.0000000005&SPHERICALMERCATOR=true&MAXEXTENT=-20037508.34,-20037508.34,20037508.34,20037508.34&REQUEST=GetMap&STYLES=&SRS=EPSG:900913&BBOX=-12812623.352549,3443367.869216,-11909512.729118,4346478.492647&WIDTH=640&HEIGHT=640

我有一个 Java servlet 接受该请求并返回一个平铺图像。您将编写自己的 servlet 或服务器端脚本来接受请求,确定数据库中的哪个图块与 BBOX 边界匹配,然后将该图块作为图像响应返回。

对不起,如果我在这里迂腐,但你对 OpenLayers 听起来很陌生。这是我开始的方式,但我对更好的想法持开放态度。

于 2013-03-19T19:40:12.970 回答