1

在使用 Openlayers 和 Javascript 制作 Web 服务方面,我有点陌生。我想在地图(例如 OSM)上创建一个可点击的网格层,它首先具有定义的空间分辨率(例如 200 m),当然,当用户缩放网格大小时,它会适应地图的新缩放级别。此外,我想用特定颜色显示网格的每个单元格,当用户单击每个单元格时,可以显示一些信息。所以,我猜每个单元格就像这一层中的一个特征(例如多边形)。我想知道 Openlayers 是否有现有的功能来做这样的事情,我可以使用,还是我必须编写所有代码?任何有关我如何能够做到这一点的帮助和建议将不胜感激。以下是创建此类服务的服务的链接,我也想做同样的事情……谢谢。

样品链接:

http://koenigstuhl.geog.uni-heidelberg.de/osmatrix/#timestamp/allotments_area/8/12/-0.2142333984375/51.578776399817066

4

3 回答 3

4

开发了您在示例中提到的应用程序后,我可以就您的问题给您一些提示。解决方案非常简单。

  1. 您看到的网格,即彩色六边形,只是地图瓦片,由遵循 Tile Map Service 模式(我使用 NodeJS)的自定义后端提供服务,而后者又使用 Mapnik(任何其他引擎也应该可以工作) , 例如 GeoServer 或 MapServer) 用于渲染图像。数据存储在添加了 PostGIS 的 Postgres 数据库中。

  2. 使用客户端库创建地图并添加切片图层。OpenLayers 和 Leaflet 都做得很好。(不过,如果您是该主题的新手,则传单更容易掌握)。

  3. 在客户端,您在地图上注册一个单击事件处理程序,您可以使用它来获取鼠标单击的坐标。使用这些坐标,将它们发送到您的后端并在数据库上执行空间查询以获取与坐标相邻的多边形。然后,服务器的响应应该提供多边形的几何形状(在这种情况下以 GeoJSON 编码,GML、KML 也应该可以正常工作)以及您想要显示的任何信息。

  4. 使用这些多边形并使用您想要的任何配色方案将它们添加到矢量图层。

查看代码以了解它是如何工作的。重要的文件是 osmatrix.js(连接到后端)、control.js(主模块,跟踪所有内容)和 map.js(令人惊讶的是,所有与地图相关的内容)。

于 2013-10-31T16:07:01.010 回答
1

Openlayers 具有稍后创建交互式矢量的功能。为了创建类似于示例中的内容,您必须 1) 添加矢量图层,2) 编写一个循环,将矢量特征添加到地图上的适当位置,3) 将特征设置为六边形,以及 4) 创建基于适当参数动态设置特征颜色的样式图。Openlayers 促进了每个步骤。

于 2013-10-14T05:47:25.130 回答
0

一个好的开始是使用传单库,因为它使用地图投影并阅读本教程:http ://build-failed.blogspot.de/2013/07/dynamically-creating-hexagons-from-real.html?m =1

于 2013-10-13T15:43:35.910 回答