javascript - 将 L.BeautifyMarkers 与 L.MarkerClusters 一起使用

标签 javascript html leaflet

我想使用 Leaflet 插件 beautify-markers 将 markerclusters 与自定义的单个标记一起使用。这些标记是根据来自 geoJson 的名为 EncounterType 的特征属性自定义的。使用 L.circleMarker 时,自定义有效。不幸的是,它不能与插件一起使用,我认为应该可以,因为它没有使用 png 格式。

    var  brownmarker = {
        icon: 'paw',
        iconShape: 'marker',
        borderColor: '#b3334f',
        textColor: '#b3334f'
        };

    var redmarker = {
        icon: 'bullseye',
        iconShape: 'marker',
        borderColor: 'Red',
        textColor: 'Black',
    };

    var bluemarker = {
        icon: 'camera-retro',
        iconShape: 'marker',
        borderColor: 'Blue',
        textColor: 'Black',
    };

    var Red = L.BeautifyIcon.icon(redmarker);
    var Blue = L.BeautifyIcon.icon(bluemarker);
    var Brown = L.BeautifyIcon.icon(brownmarker);


    var markers = L.markerClusterGroup();  
    function style(feature){
        switch (feature.properties.EncounterType) {
            case 'Shooting' ||  'Hunting':
            return {
                Red
            };
            case 'Sighting':
            return {
                Blue
            };
            case 'Attack' || 'livestock' || 'Chased' :
            return {
                Brown
            };
            default:
            return {
                Blue
            }
        }
        }


    var geoJsonLayer= L.geoJSON(storer, {
        pointToLayer: function (geoJsonPoint, latlng) {
        return L.marker(latlng);
        },
            onEachFeature: onEachFeature,
            icon: style
        });


    markers.addLayer(geoJsonLayer);
    map.addLayer(markers);

如何使用此插件自定义这些单独的标记,同时将它们保持在 MarkerCluster 形式?

最佳答案

使用BeautifyMarker应该没有问题与 Leaflet.markercluster 一起插件插件。

您只是奇怪地在 pointToLayer 选项中创建了您的标记。

icon 选项用于 L.marker工厂,而不是 L.geoJSON

var geoJsonLayer = L.geoJSON(storer, {
  pointToLayer: function(geoJsonPoint, latlng) {
      return L.marker(latlng, {
        icon: style(geoJsonPoint)
      });
    }
    /*,
      onEachFeature: onEachFeature,
      icon: style*/
});

现场演示:https://jsfiddle.net/rbje8v40/

关于javascript - 将 L.BeautifyMarkers 与 L.MarkerClusters 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46555718/

相关文章:

javascript - 在 Node.js 中使用 mongoose 样式模式 MSSQL

javascript - 逐行读取本地文本标题,将行存储在数组中

javascript - Array.prototype.includes() (或 .indexOf())的参数总是返回 true?

javascript - 多个按钮仅显示按钮内容

php - 用 utf-8 编码 php 页面给我错误

javascript - 尝试导入错误 : 'Jumbotron is not exported from ' react-bootstrap' (imported as 'Jumbo' )

javascript - 使用 $emit 和 $on 单击按钮时显示 div 标签

javascript - 将(旋转的)ImageOverlay 内的 X 和 Y 坐标转换为纬度和经度

javascript - Leaflet.js - 如何只绘制连续的 48 个状态?

reactjs - 在 React 不直接管理 DOM 的区域中,可以在浏览器中使用 ReactDOMServer.renderToString 吗?