传单根据文本字段更改圆圈标记颜色

时间:2017-05-26 16:16:54

标签: javascript html leaflet geojson

我的传单地图上有圆形标记,使用下面的代码,一切正常。

但是,我希望根据名为' stype'的属性字段显示不同颜色的标记。

关于如何实现这一目标的任何帮助或指导?

        function siteslabels (feature, layer){
        layer.bindPopup("<p class='info header'>"+ 
        "<b>" + feature.properties.SITE + "</b>" + 
        "</br>" + feature.properties.Address1 +
        "</br>" + feature.properties.stype +
        "</p>");
        };


        var geojsonMarkerOptions = {
            radius: 8,
            fillColor: 'green',
            color: 'black',
            weight: 1,
            opacity: 1,
            fillOpacity: 0.8
        };

        L.geoJson(sites, {
            pointToLayer: function (feature, latlng) {
                return L.circleMarker(latlng, geojsonMarkerOptions);
            },
            onEachFeature: siteslabels
        }).addTo(map);

2 个答案:

答案 0 :(得分:1)

再次检查Leaflet GeoJSON tutorialpointToLayer选项部分。

如果您将积分渲染为CircleMarkers,则可以轻松地将其style设置为使用不同的颜色。

如果您坚持使用标记,则必须提供自定义图标。您可以查找marker plugins,例如Leaflet.Extra-Markers

答案 1 :(得分:1)

排序好了。这是我的代码

    <script>    
        <!-- long and lat for UK & Zoom level for whole of UK  -->
        var map = L.map('map',{ center:[54.038486, -1.948915], zoom: 5});

        L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
        attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
        }).addTo(map);



        <!-- LAYERS/SITES -->
        <!-- LAYERS/SITES POP UP CONTENT-->
        function siteslabels (feature, layer){
        layer.bindPopup("<p class='info header'>"+ 
        "<b>" + feature.properties.SITE + "</b>" + 
        "</br>" + feature.properties.Address1 +
        "</br>" + feature.properties.stype +
        "</p>");
        };

        <!-- LAYERS/SITES POP UP COLOUR CIRCLE MARKERS->
        function getColor(stype) {
          switch (stype) {
            case 'POP':
              return  'orange';
            case 'Regen':
              return 'green';
            case 'LLU':
              return 'blue';
            case 'Colo':
              return 'purple';
            case 'DMSU':
              return 'blue';
            default:
              return 'white';
          }
        }

        <!-- LAYERS/SITES ADD LAYER->
        L.geoJson(sites, {
            pointToLayer: function (feature, latlng) {
            return new L.CircleMarker(latlng, {radius: 8, 
                                                fillOpacity: 1, 
                                                color: 'black', 
                                                fillColor: getColor(feature.properties.stype), 
                                                weight: 1,});
            },
            onEachFeature: siteslabels
        }).addTo(map);


    </script>