问题标签 [deck.gl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用标准 Javascript 的 Deck.gl HexagonLayer 工具提示
我有以下代码将纬度和经度分组到 hexbins 中,并使用 mapbox 底图将它们绘制在地图上,并在其顶部有一个 deck.gl 层:
我想为每个 hexbin(地图顶部的条形图)添加一个工具提示,但我不确定如何完成此操作。我能在工具提示周围找到的唯一例子是this,所以看起来应该是可能的。我尝试使用这部分代码将其添加到图层上:
但它没有用。有谁知道我怎么能做到这一点?我在该字段中有一些额外的数据,data
即name
和passengers
,最好我想说将第一个 hexbin 工具提示创建为逗号分隔的data.name
值列表。该示例似乎使用例如来引用变量{colorValue}
。或者,每个 hexbin 的工具提示也可能是可以接受的。我只是在我的本地机器上作为静态页面运行,所以不确定这是否会有所不同。
编辑:基于this添加了以下代码,但这也不起作用:
它也提到了,${object.centroid.join(', ')}\nCount: ${object.points.length}
但这给出了一个错误。
reactjs - Deck.GL ScatterplotLayer 不渲染圆半径
我正在尝试在地图上画一个圆圈(中心会有一个标记)。但是,我的地图上什么也没有出现。我尝试了各种 ScatterplotLayer 选项并尝试切换位置,还尝试了 getPosition: (d) => [d.coordinates[0], d.coordinates[1]] 等。但我的地图上没有出现任何内容。
javascript - Deck.GL如何正确调整setstate,让Scatterplotlayer和Tripslayer可以同步渲染
(1)在deck.gl中,实现两层叠加后的视觉效果。现在实现的效果是TripsLayer因为加入了animate可以自动渲染,但是ScatterplotLayer只能通过拖动下方的时间线进度条来实现动画效果,如下图。也就是说,叠加之后,它们现在看起来是两个不相关的层。在 ScatterplotLayer(添加了 DataFilterExtension)中,圆的半径仍然由屏幕底部的进度条控制。拖动以更改大小,而不是类似于 TripsLayer 的自动渲染。
我希望他们实现基于公共属性时间戳的同时渲染。也就是说,当 TripsLayer 的轨迹移动时,ScatterplotLayer 的圆半径也会随之变化。我之前也在ScatterplotLayer中加了animate,但是没有效果,可能是Setstate没有正确调整。非常感谢大家的帮助~~现在实现的效果截图,完整代码如下:
(2)下面的代码和截图是我把setstate放在setinterval里面,加了一个定时器来实现一个叫tick()的方法。计时器组件将每秒调用一次。没动。可以在浏览器的开发者工具中看到时间是实时更新的,但是 filterValue 没有更新(filterValue: 被调用来检索每个将被过滤的对象的值。返回任一数字(如果 filterSize: 1 ) 或数组。这里是按时间戳过滤)。可能有一小步设置不正确。非常感谢您的建议~
d3.js - deck.gl 中的图例
我想知道是否可以从 deck.gl 层访问聚合数据以绘制图例。
因为提供了配色方案,所以我只需要 screengrid 层计算的聚合值的范围就可以将其添加到图例中。
我知道有工具提示,但在某些情况下,访问这些值会很好。
react-native - React Kepler Mapbox API 密钥
我是 React 的新手,并且使用了一个示例来整理一张地图,以使用 Kepler 显示数据。我在 .env.local 文件中使用默认令牌。我使用新文件在我的项目文件夹下创建了该文件并为其命名,然后我只有以下行。
// 请记住,此令牌是我使用 mapbox 创建帐户时获得的默认令牌。可以使用默认令牌吗?
我在 app.js 中使用它的方式
页面呈现但出现此错误。它显然没有从 .env.local 文件中获取 mapbox 标识符。
我在这里做错了什么?
还有一个警告说
当我点击它时,它只会让我重新创建一个带有 mapbox 的帐户并访问令牌。我是否需要考虑任何因素来制作代币?或默认是好的。
任何人?
google-maps - 如何使用 TileServer-GL 或 OpenMapTiles 服务器将多个 .pbf 文件而不是 .mbtiles 作为矢量切片提供到使用 Deck.GL MVTLayer 的 Google 地图中?
概括
我有 .geojson 文件并希望将它们(使用tippecanoe / geobuf / other)转换为 .mbtiles 或 .pbf 文件,以将它们作为来自服务器(TileServer-GL / OpenMapTiles / 其他矢量瓷砖服务器)的矢量瓷砖提供给谷歌地图Deck.GL的MVTLayer。
预期成绩:
- 能够从 TileServer-GL .pbf 文件而不是 .mbtiles 文件提供服务。
- 能够从 TileServer-GL 提供来自文件夹的多个 .mbtiles(或 .pbf)文件,而无需使用特定的 .mbtiles 文件显式启动它。
实际结果:
- 如下所示,我正在使用带有 Deck.GL MVTLayer与矢量平铺集成的谷歌地图,以提供来自 TileServer-GL 的特定 .mbtiles 文件,作为形状或点的集合。
- 什么都没管。
我的尝试
我从 Docker 运行 TileServer-GL,从包含数据文件的文件夹:
在 Docker 中,我通过 tippecanoe 将 .geojson 文件转换为 .mbtiles 文件。但是,对于更大的文件,转换似乎需要一些时间。我在 aprox 中获得了一个 890 MB 的 .mbtiles 文件。45 MB .geojson 文件 60 分钟,包含 57k 个功能。
我设法通过 geobuf (json2geobuf) 更快地将 .geojson 文件直接转换为 .pbf 文件。我在 aprox 中获得了一个 32 MB 的 .pbf 文件。45 MB .geojson 文件 37 秒,包含 57k 个特征。
但是,我似乎无法直接从 TileServer-GL 或 OpenMapTiles-Server 提供 .pbf 文件。
我试过了
但是 TileServer-GL 没有启动,我得到了
我还尝试在本地创建 config.json 文件后重新运行
配置文件
但是 TileServer-GL 没有启动,我得到了
在 OpenMapTiles 服务器上,我什至找不到如何指定输入文件(参考):
我的问题
- 如何使用 TileServer-GL 或 OpenMapTiles 服务器直接提供 .pbf 文件而不是 .mbtiles 文件?
- 如何使用 TileServer-GL 从文件夹中提供所有文件 (.mbtiles),而无需使用特定的 .mbtiles 文件显式启动它
docker ... maptiler/tileserver-gl --mbtiles some-file.mbtiles
?
r - 在用户单击时放大到 R Shiny 中的 deckgl 地图
这个问题是这个问题的延续(点击 bar 时更新 Deckgl map in R shiny)。
当用户单击一个栏时,我会进入详细信息视图,这很好,但我还想在详细信息视图中更新缩放级别。这个怎么做 ?
我试图在“on_click”图层中设置缩放参数,但它似乎不起作用。
background - 如何在 Deck.gl 中更改 PointCloudLayer 的背景颜色
我用PointCloudLayer创建了一个应用,和这里的例子很相似: Deck.gl官方例子
这个例子的源代码可以从这个网址找到:这个例子的源代码
我没有指定背景颜色,但似乎 PointCloudLayer 使用此示例的背景颜色作为默认值。如何更改 PointCloudLayer 的背景颜色?