使用 mapbox-gl-js 集群自定义 html 标记

2024-01-22

我正在使用 mapbox-gl-js API,并将其与 React 一起使用来创建一些自定义标记,如下所示:

        let div = document.createElement('div');
        let marker = new mapboxgl.Marker(div, {
            offset: [ -20, 80 ]
        });

        marker.setLngLat(person.geometry.coordinates);

        render(
            <MapPersonIcon />,
            div,
            () => {
                marker.addTo(map);
            }
        );

这效果很好。然而,我现在想对这些标记进行聚类,产生与图层功能相同的效果,即

https://www.mapbox.com/mapbox-gl-js/example/cluster/ https://www.mapbox.com/mapbox-gl-js/example/cluster/

有谁知道这是否可行(希望也适用于自定义集群)或者是否会在即将发布的版本中提供?


此功能现在已在 Mapbox GL js 中 -https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/ https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/

要点:

使用设置数据源时map.addSource,确保您定义了cluster: true and clusterRadius: int,像这样:

map.addSource( 'sourceName', {
    type: "geojson",
    data: {
        type: 'FeatureCollection',
        features: [JSON]
    },
    cluster: true,
    clusterRadius: 80,
});

这将推动mapbox对你的图标进行聚类,但是你需要告诉mapbox当它对这些图标进行聚类时要做什么:

map.on( 'moveend', updateMarkers ); // moveend also considers zoomend

业务(根据相关性进行了精简):

function updateMarkers(){
    var features = map.querySourceFeatures( 'sourceName' );

    for ( var i = 0; i < features.length; i++ ) {
        var coords = features[ i ].geometry.coordinates;
        var props = features[ i ].properties;
            
        if ( props.cluster ){ // this property is only present when the feature is clustered
            // generate your clustered icon using props.point_count
            var el = document.createElement( 'div' );
            el.classList.add( 'mapCluster' );
            el.innerText = props.point_count;
            marker = new mapboxgl.Marker( { element: el } ).setLngLat( coords );
                
        } else { // feature is not clustered, create an icon for it
            var el = new Image();
            el.src = 'icon.png';
            el.classList.add( 'mapMarker' );
            el.dataset.type = props.type; // you can use custom data if you have assigned it in the GeoJSON data
            marker = new mapboxgl.Marker( { element: el } ).setLngLat( coords );
        }
            
        marker.addTo( map );
    }
}

注意:不要复制粘贴此代码,而是将其与https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/ https://docs.mapbox.com/mapbox-gl-js/example/cluster-html/了解整体情况。希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mapbox-gl-js 集群自定义 html 标记 的相关文章

  • Leaflet/Mapbox渲染问题(灰色区域)

    由于某种原因 我的地图上有一个很大的灰色区域 直到我移动它使其出现 但乍一看 有一个部分缺失了 我以前在网上见过很多这样的情况 但直到现在才想知道如何解决它 这是一个使用 MarkerClusterGroup 作为集群的简单 Mapbox
  • 使用外部地图的 Mapbox GL

    我想在我的 Android 应用程序中使用 Mapbox GL 该服务即将发布 我有一个关于使用渲染器的棘手问题 我喜欢渲染器本身 但我真的想在应用程序中使用我自己的地图数据 不是 Mapbox 提供的付费数据 例如 我想自己解析 Open
  • Mapbox 与 Angular 6.“找不到地图容器”错误

    我正在开发我的第一个角度网络应用程序 我想介绍一些类似于谷歌地图的东西 由于新的计费策略 我不想使用最后一个 所以我尝试了 MapBox 按照教程 我成功创建了我需要的地图 问题是 我不知道如何在角度分量上显示它 我为地图生成了这个文件 并
  • 如何获取 mapboxgl.GeoJSONSource 对象的边界框?

    我正在设置一个 Mapbox GL JS 地图 如下所示 mapboxgl accessToken pk my token var cityBoundaries new mapboxgl GeoJSONSource data http do
  • Mapbox 描述框的地图样式

    我是新手 正在研究他的前端技能 我正在设计自己的网站来学习 我正在尝试使用 Mapbox API 实现地图 但无法获取我在地图中使用的描述框的样式 链接到我的网站 http rohanchhabra in 地图位于底部 现在我已经成功在地图
  • Mapbox GL 集群缩放

    我试图在用户单击群集时显示所有标记 这是我到目前为止所做的 map on click function e var cluster features map queryRenderedFeatures e point layers clus
  • MapBox iOS MGLPolyline 跨越(180 或 -180)经度时出现问题

    在 MapBox iOS sdk 4 4 1 中 如果 MGLPolyline 穿过 180 或 180 经度 地图显示它正在绕地球走更长的路 而不是走更短的路 override func viewDidAppear animated Bo
  • 如何在 Mapbox 3.6 中旋转汽车标记图像?

    我想根据路线方向旋转标记图像 我已经使用 Map box SDK 实现了地图 坐标和方向是通过网络服务获取的 我尝试了 imageForMarker 但没有成功 实现如下 func mapView mapView MGLMapView im
  • Mapbox 中路线的多色折线

    我用我的应用程序记录路线 主要是摩托车路线 并希望根据路线每个点的速度为其着色 基本上我知道如何在 Mapbox 中做到这一点 这就是问题所在 由于您只能为一条折线设置颜色 因此我必须将速度部分中的路线分开 并使用其特定的颜色打印每个路线部
  • 超集地图框工具提示的个性化

    根据超集拉取请求 可以使用一些 JavaScript 来个性化地理数据的工具提示 我尝试了很多方法来将点数据获取到工具提示 但没有一个起作用 Superset 在哪里存储额外的 JS 参数 The object props OwnData此
  • 如何在本机反应中使用 MapLibre GL Js

    我正在寻找一种在我的反应本机应用程序中使用 OpenStreetMap 数据的方法 在我最近的研究中 我发现MapLibre https maplibre org 这是基于MapBox GL旧版本的免费选项 我面临的问题是 除了 react
  • 如何放大 Mapbox Leaflet 中的标记单击事件?

    我想在单击标记时放大该标记 我正在使用 Mapbox 和传单 I tried marker on click function e map setView e lat e lng 12 但这给了我某种错误 类型错误 t 为空 我什至尝试过
  • Android Mapbox SDK v10:归因位置;用户界面设置

    如何调整徽标和属性com mapbox mapboxsdk maps MapView 在较旧的 SDK v9 中 可以通过 XML 属性 或通过以编程方式更改 UiSettings 简单地设置 UiSettings mapbox mapbo
  • 如何隐藏mapbox-gl中所有打开的标记弹出窗口?

    我找不到隐藏所有打开的标记弹出窗口或什至检查标记弹出状态的方法 我会想getPopup isOpen 可以让你检查状态 并且getPopup remove 在迭代某个数组中所有存储的标记时运行 将完成您在这里所需的操作
  • Mapbox GL JS:将基础层设置为白色?

    我想显示带有白色背景的 Mapbox GL JS 地图 而不是地图背景 这是我现在的代码 mapboxgl accessToken mytoken var map new mapboxgl Map container map style m
  • 从mapbox api获取建筑信息

    有没有办法从 Mapbox API 获取建筑信息 几何形状 高度等 我从这个例子开始 https www mapbox com mapbox gl js example 3d buildings https www mapbox com m
  • Mapbox Android 确定包含所有标记的缩放级别

    有没有办法确定缩放级别 以便我的所有标记都能适合缩放级别 我正在使用mapbox 0 4 0 我认为答案与此类似 但我找不到android版本 https www mapbox com mapbox js example v1 0 0 ma
  • 使用python在scattermapbox中围绕点绘制多边形

    我在用散点图箱 https plotly com python scattermapbox 在地图上绘制点 我想画出覆盖的多边形 x milePOI 的半径 dcc Graph id map graph application callba
  • 传单圆圈绘制/编辑问题

    我第一次制作传单 并面临绘制圆圈和编辑 更改圆圈位置 的问题 我面临的问题是 编辑 移动 圆从一个位置到另一位置会改变其半径 Note 请尝试在给定的小提琴中在地图顶部创建圆圈 然后通过单击编辑按钮将其移动到底部 如果我在地图的顶部创建圆圈
  • 致命错误:在字典中发现“地理编码地标”类型的重复键。 (Mapbox 地理编码器)

    我引用 这通常意味着要么该类型违反了 Hashable 的要求 要么此类字典的成员在插入后发生了变化 我正在使用 Mapbox Geocoder 当发生此运行时错误时 我的 XCode 将我带到线程 1 0 swift runtime on

随机推荐

  • GruntJS - grunt 构建后错误的图像路径

    Grunt 弄乱了我的缩小 CSS 我不知道为什么以及如何避免它 简而言之 在缩小之前我有一些像这样的背景图像 head image height 380px background url images head1 bg png repea
  • MYSQL排序与主义

    如本文所述question https stackoverflow com questions 41126279 doctrine orm order by annotations object fields并回答 不可能 我提出了一个新问
  • 倒计时栏 Android 示例

    有什么帮助可以在进度条上显示这个简单的倒计时吗 new CountDownTimer 30000 1000 public void onTick long millisUntilFinished mTextField setText sec
  • 内部函数(python)的文档字符串是否必要? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在Python中 我们用以下划线开头来指定内部函数 私有方法 这些函数是否应该使用文档字符串进行记录 是否必需 我的意思是正式文档 而不是帮助代
  • 无法使用 ssl 与 PDO 连接,但使用 ssl 的 mysqli 可以工作

    我们通过创建证书 更新 my cnf 创建具有正确权限的用户并需要 ssl 重新启动服务来设置带有 SSL 的 mysql 并通过远程连接验证它在服务器端和客户端 通过 mysql 命令行 是否正常工作 我还验证了 PDO 在完全相同的设置
  • 如何绘制参数的不同值的分布?

    我有以下脚本 library ggplot2 values lt c 0 1 0 15 0 2 0 3 0 5 1 1 5 2 2 5 colours lt palette 1 length values p lt ggplot data
  • 如何在 UipageViewController 中快速预加载下一个和上一个视图

    由于经过大量搜索和 RND 以及许多不同的代码实现后 滑动延迟问题尚未解决 因此我猜预加载下一个和上一个视图控制器将解决我的滑动延迟问题 如何在滑动之前加载下一个和上一个视图 经过长时间的 rnd 和搜索后没有找到解决方案 在显示可见控制器
  • 如何添加 favicon gatsby-config.js?

    所以我尝试在我的博客中添加图标 代码如下 在我的 gatsby config js 中 module exports siteMetadata title Chatbiz Blog plugins gatsby plugin react h
  • 是否有任何解决方法可以禁用 Google 地球插件的“缩放时自动倾斜”功能?

    最新版本的 Google 地球附带了一项名为 缩放时自动倾斜 的功能 如果启用 当您放大到靠近地面时 Google 地球会自动将相机向地平线倾斜 可以从 GUI 中禁用此功能 首选项 gt 导航选项卡 不幸的是 到目前为止我还没有找到一种方
  • 使用 PowerShell 将文件上传到 SFTP

    我们被要求设置从我们的一台服务器到 SFTP 站点的自动上传 每个星期一早上都会有一个文件从数据库导出到文件管理器 他们希望在星期二将该文件上传到 SFTP 我们当前使用的身份验证方法是用户名和密码 我相信也可以选择拥有密钥文件 但选择了用
  • 如何在 MongoDB 查询中使用正则表达式变量

    我想根据我构造的正则表达式查询 MongoDB 文档 例如 我构建了一个简单的正则表达式 如下所示 它是 Nodejs 中随机字母和随机数字的组合 var randnum Math floor Math random 10 1 var al
  • DropDownList 的行为不符合预期

    我的 DropDownListFor 遇到问题 希望您能帮助我 我猜这是你要么知道要么不知道的事情之一 问题是我的数据库中有一个国家 地区表 其中包含国家 地区列表 我希望从下拉列表中获得的行为是在地址表中创建一个外键引用 指向下拉列表中选
  • 使用异步而不等待?

    考虑使用异步而不等待 https stackoverflow com questions 12016567 using async without await 认为您可能误解了 async 的作用 警告是 完全正确 如果您将方法标记为异步但
  • Scala 中的列表和元组

    来自 Martin Odersky 的 Scala 编程 一书 另一个有用的容器对象是元组 像列表一样 元组是不可变的 但与列表不同的是 元组可以包含不同类型的元素 但我可以拥有 val oneTwoThreee List 1 2 Thir
  • 在 Bash 中捕获 stdout 和 stderr [重复]

    这个问题在这里已经有答案了 我知道这个语法 var myscript sh or var myscript sh 将捕获结果 stdout of myscript sh into var 我可以重定向stderr into stdout如果
  • Oracle 数据库中的 sysdate 和 dbtimezone 不同

    通过这个查询 select sysdate from dual 结果是 27 09 2018 07 50 50 这UK time with Select dbtimezone from dual output 10 00 我想要sysdat
  • 如何从 LogisticRegressionCV 和 GridSearchCV 获得可比较且可重复的结果

    我想用不同的参数对不同的分类器进行评分 为了加速LogisticRegression I use LogisticRegressionCV 至少快 2 倍 并计划使用GridSearchCV为他人 但问题是它给了我平等C参数 但不是AUC
  • 为什么我的 CSS 样式没有被应用?

    我有这个html p span class fancify Parting is such sweet sorrow span span Bill Rattleandrollspeer span p 以及这个 css 添加到 Site cs
  • 我如何从库比蒂诺日期选择器中隐藏一天

    我只需要从日期选择器中获取年份和月份 那么如何从日期选择器中隐藏日期 CupertinoDatePicker initialDateTime DateTime now onDateTimeChanged DateTime newdate p
  • 使用 mapbox-gl-js 集群自定义 html 标记

    我正在使用 mapbox gl js API 并将其与 React 一起使用来创建一些自定义标记 如下所示 let div document createElement div let marker new mapboxgl Marker