带自定义图标的Leaflet SuperCluster标记?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带自定义图标的Leaflet SuperCluster标记?相关的知识,希望对你有一定的参考价值。

有没有办法在使用Leaflet SuperCluster时更改默认标记图标?

我按照演示中给出的示例进行操作。我能够使Supercluster工作并能够创建集群。但是单个标记具有默认的传单标记图标,该图标来自示例中的方法createClusterIcon。

我有不同类型的标记,并希望每个标记有不同的图标。

Supercluster使用具有函数pointToLayer的geoJSON层来创建集群图标。我们如何修改或自定义它以创建群集图标,并为每个标记设置自定义图标?

createClusterIcon方法 -

function createClusterIcon(feature, latlng) {
if (!feature.properties.cluster) return L.marker(latlng);

var count = feature.properties.point_count;
var abbrev = feature.properties.point_count_abbreviated;
var size =
    count < 100 ? 'small' :
    count < 1000 ? 'medium' : 'large';
var icon = L.divIcon({
    html: '<div><span>' + feature.properties.point_count_abbreviated + '</span></div>',
    className: 'marker-cluster marker-cluster-' + size,
    iconSize: L.point(40, 40)
});
return L.marker(latlng, {icon: icon});}

添加到地图的geoJSON图层

var markers = L.geoJson(null, {
pointToLayer: createClusterIcon}).addTo(map);

使用addData方法将标记添加到geoJSON图层

markers.clearLayers();
markers.addData(e.data);
答案

对代码的更有针对性的理解解决了这个问题。

createClusterIcon函数中的if条件应该用于创建自定义图标,该函数在特征没有集群属性时返回L.marker。

我更改了if条件如下:

if (!feature.properties.cluster) {
            let icon = L.icon({
                iconUrl: '<icon_url>',
                iconSize: [40,40]
            })
            return L.marker(latlng, {
                icon: icon
            });

        }

现在每个标记都有iconUrl表示的图标。

以上是关于带自定义图标的Leaflet SuperCluster标记?的主要内容,如果未能解决你的问题,请参考以下文章

Leaflet中使用Canvans 画图(drawImage)漂移的问题

004 Leaflet 第四个demo 使用自己的图标替换marker图标

SpringMVC和Freemarker整合,带自定义标签的使用方法

Leaflet - 在标记点击时从json获取数据,而不是弹出窗口

xml 带图像的模板数据Feed / Sitemap(带自定义图片网址结构)[MPS]

php生成带自定义logo和带二维码跳转自定义地址的二维码