多个图标精灵与 Mapbox gl js
Multiple icon sprites with Mapbox gl js
在Mapbox
中.js您可以为每个标记指定一个图像,有什么方法可以使用Mapbox GL JS执行此操作吗?还是每张地图限制为一个精灵?标记子画面可能会增长到下载缓慢的大小。
是否可以一次使用多个精灵?
还有没有办法在地图加载后切换精灵?我尝试使用 map.setStyle() 重新加载原始样式,但自定义标记不会重新出现。
首先,让我们确保我们在术语方面保持一致:
- "
- 符号图层要素"(即标记)可能会在地图上显示"图标" "
- 精灵"是"图标"的集合
- 一个"风格"有一个"精灵"
在Mapbox中.js您可以为每个标记指定一个图像,有没有办法使用Mapbox GL JS执行此操作?
图层中的每个"符号图层要素"都可以使用"令牌"显示不同的"图标"。这在我们的文档中有所提及。
如果"符号图层要素"具有icon
属性,则可以使要素使用该图标
"symbol-icon": "{icon}"
是否可以一次使用多个精灵?
不能一次使用多个精灵。您可以在一个图层中使用多个图标。您可以通过创建多个符号图层来为要素使用多个图标。
还有没有办法在地图加载后切换精灵?
不,这在Mapbox GL JS中是不可能的。
根据卢卡斯上面的回答,如果你想在运行时更改一个点的图标,你应该有一个单独的图层使用另一个图标图像,然后简单地从一个层的源数据中删除该点并将其添加到另一个层。
假设您希望在单个图层中显示多个图像,您可能需要检查此示例:https://docs.mapbox.com/mapbox-gl-js/example/add-image-missing-generated/
但是您可能必须添加图像,并且 svg 可能不起作用。
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [this.long, this.lat]
},
'properties': {
'icon': 'bus-generic'
}}
如果您有属性,则可以查询该属性并在图层定义中使用它来显示不同的图标:
map.addLayer({
'id': 'bus-layer',
'type': 'symbol',
'source': 'bus-source', // reference the data source
'layout': {
'icon-image': ['get', 'icon'], // reference the icon in properties
'icon-size': 0.2,
}
});
相关文章:
- Mapbox JS,来自URL的GeoJSON featureCollection对象只添加了一个标记
- 在标记mapbox.js上添加自定义图标
- 如何在使用mapbox LeafLet拖动标记时获取标记拖动事件
- Mapbox:打开一个标记's在地图外点击弹出
- Mapbox,无法在jquery回调中设置GeoJSON
- 多个图标精灵与 Mapbox gl js
- 指定返回的getPaintProperty方法Mapbox gl
- 嵌入式GeoJSON样式与Mapbox GL一起使用吗
- Mapbox-GL setStyle 可移除图层
- Mapbox GL js 可用图标
- Mapbox.GL:滚动放大和缩小到自定义地图框地图上的特定坐标
- Mapbox GL JS API设置边界
- Mapbox GL JS禁用滚动缩放
- Mapbox-gl-directions事件不会触发
- Mapbox GL JS -数据驱动样式-查找最小值层中数据的最大值或范围
- Vue.js单文件组件(Quasar Framework)中的Mapbox gl
- React + mapbox-gl:包括弹出
- Mapbox-gl:从中心点,缩放级别和尺寸计算地图边界
- 在地图加载后切换Mapbox GL JS地图的交互性
- Mapbox GL绘制线条和bezier