我正在使用 WebGL 在我的地图顶部的画布层上为 OSM 数据绘制线条和多边形。我编写了一个查询,它从planet_osm_polygon
表中返回一个多边形列表。它将列表作为 JSON 对象返回。我在用
gl.drawElements(gl.LINES, vetexIndex.length, gl.UNSIGNED_SHORT, 0)
绘制多边形。
我的索引缓冲区如下所示:
pIndexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, pIndexBuffer);
pVertexIndices = new Uint16Array([0,1, 1,2, 2,3]);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, pVertexIndices, gl.STATIC_DRAW);
在这里,对于多边形的索引,我使用了 0,1 1,2 和 2,3 作为对,它绘制了三个连续的线(作为围绕多边形的边界)我想绘制几个像这样的其他多边形。不使用 drawElements() 和索引缓冲区,只使用 drawArrays() 和 gl.LINE_STRIP 如下:
gl.drawArrays(gl.LINESTRIP, 0, json_data_length)
绘制多边形,但将每个多边形的一端与下一个连接(因为它是 LINE_STRIP)。
如何在我的地图上绘制单独的多边形?如何在这里为每个多边形使用我的索引缓冲区?
我不想使用任何外部库;只是普通的 JavaScript。我已经将 OSM 数据库中的经纬度坐标转换为 JavaScript 代码中的像素坐标。
使用 gl.LINE_STRIP
使用 gl.LINES 和索引缓冲区